Laravelでカート機能を実装する方法【LaravelShoppingcart】
どうもこんにちは塚本です!
外の世界のことが分からないので
とっても気になるのですが,
皆さんはECサイトを構築されるときは何を使っているのでしょうか?
Laravel
でカート機能を導入する際は,
LaravelShoppingcart
が便利だったので紹介します.
LaravelShoppingcart
LaravelShoppingcart はシンプルなショッピングカート機能をLaravelに追加してくれるライブラリです.
Installation
普通にcomposer
を使えばOKです.
$ composer require gloudemans/shoppingcart
Add Providers
基本的にこれだけで動くはずですが,動かない場合はLaravelのconfig/app.php
の中の
providers
へGloudemans\Shoppingcart\ShoppingcartServiceProvider::class
を追記してください.
providers sample
'providers' => [
/*
* Laravel Framework Service Providers...
*/
Illuminate\Auth\AuthServiceProvider::class,
Illuminate\Broadcasting\BroadcastServiceProvider::class,
Illuminate\Bus\BusServiceProvider::class,
Illuminate\Cache\CacheServiceProvider::class,
︙
/*
* Package Service Providers...
*/
Gloudemans\Shoppingcart\ShoppingcartServiceProvider::class
︙
],
Add Alias ( Optionally )
また,オプションとして,エイリアスも追加できます.
同じくconfig/app.php
のaliases
に
'Cart' => Gloudemans\Shoppingcart\Facades\Cart::class,
を追記します.
aliases sample
'aliases' => [
'App' => Illuminate\Support\Facades\App::class,
'Arr' => Illuminate\Support\Arr::class,
'Artisan' => Illuminate\Support\Facades\Artisan::class,
'Auth' => Illuminate\Support\Facades\Auth::class,
︙
'Cart' => Gloudemans\Shoppingcart\Facades\Cart::class,
],
Cart::add()
カートに商品を入れたいときはCart::add()
を使用します.
以下に示すようにid
, 商品名
, 個数
, 単価
, オプション(配列)
が基本の5つのパラメータになります.
Cart::add('293ad', 'Product 1', 1, 9.99, ['size' => 'large']);
配列を使ってカートに入れる
キーを指定することで,配列を使ってカートに追加することも可能です.
Cart::add(
[
'id' => '293ad',
'name' => 'Product 1',
'qty' => 1,
'price' => 9.99,
'options' => [
'size' => 'large'
]
]
);
複数アイテムの一括追加
このようにすることで複数アイテムを追加可能です.
Cart::add([
['id' => '293ad', 'name' => 'Product 1', 'qty' => 1, 'price' => 10.00],
['id' => '4832k', 'name' => 'Product 2', 'qty' => 1, 'price' => 10.00, 'options' => ['size' => 'large']]
]);
Cart::add([$product1, $product2]);
モデルと関連付ける
associate()
を使うことでモデルとの関連付けが可能です.
Cart::add($item->id, $item->name, $item->quantity, $itemPrice, $options)->associate(Item::class);
Cart::content()
Cart::content()
を使うことでカートの内容を取ってくることができます.
Cart::total()
Cart::total()
はカートの合計金額(税込)を取ってくることができます.
金額のフォーマットはconfig/cart.php
から変更が可能です.
また,4月からはあまり使うことは無いかもしれませんが
Cart::subtotal()
で税抜の合計金額を取ってこれます.
Cart::count()
Cart::count()
は文字通り,カートに入っている個数を取ってこれます.
Cart::remove()
カートに入っているオブジェクトには$rowId
というものが振られています.
それを利用することで,カートから商品を削除することが出来ます.
sample
$rowId = 'da39a3ee5e6b4b0d3255bfef95601890afd80709';
Cart::remove($rowId);
Instances
LaravelShoppingcart
はカートの複数のインスタンスをサポートしています.
カート機能の他に欲しい物リストの実装サンプルが公式に記載されています.
Cart::instance('shopping')->add('192ao12', 'Product 1', 1, 9.99);
// Get the content of the 'shopping' cart
Cart::content();
Cart::instance('wishlist')->add('sdjk922', 'Product 2', 1, 19.95, ['size' => 'medium']);
// Get the content of the 'wishlist' cart
Cart::content();
// If you want to get the content of the 'shopping' cart again
Cart::instance('shopping')->content();
// And the count of the 'wishlist' cart again
Cart::instance('wishlist')->count();
まとめ
Githubに載っているサンプルから主なものを取り出しただけではありますが,ざっとこのような感じになります.
むかし,$_SESSION
等を駆使して生PHPで頑張ってECサイトを作ったことを思い出しましたがそれに比べると
サクッと導入できて,サクッと使うことができるのでおすすめだと思います.