1、安装
通过Composer安装扩展包:
composer require syscover/shoppingcart dev-master
然后到config/app.php的providers中注册服务提供者:
Syscover\Shoppingcart\ShoppingcartServiceProvider::class,
同时在aliases中注册门面:
'CartProvider' => Syscover\Shoppingcart\Facades\CartProvider::class,
发布扩展包的配置文件到config目录:
php artisan vendor:publish --provider="Syscover\Shoppingcart\ShoppingcartServiceProvider"
之后你可以运行PHPUnit单元测试:
phpunit tests/CartProviderTest
以测试扩展包是否有问题。
2、使用
ShoppingCart扩展包为我们操作购物车提供了丰富的方法。
添加到购物车
// 通过add方法添加
CartProvider::instance()->add('293ad', 'Product 1', 1, 9.99, array('size' => 'large'));
// 通过数组添加
CartProvider::instance()->(['id' => '293ad', 'name' => 'Product 1', 'qty' => 1, 'price' => 9.99, 'options' => array('size' => 'large')]);
// 批量添加
CartProvider::instance()->([
array('id' => '293ad', 'name' => 'Product 1', 'qty' => 1, 'price' => 10.00),
array('id' => '4832k', 'name' => 'Product 2', 'qty' => 1, 'price' => 10.00, 'options' => array('size' => 'large'))
]);
更新购物车
$rowId = 'da39a3ee5e6b4b0d3255bfef95601890afd80709';
//rowId是表示更新的购物车条目ID,第二个参数可以是数字用于表示更新后的数量,也可以是数组表示更新的属性
CartProvider::instance()->update($rowId, 2);
CartProvider::instance()->update($rowId, array('name' => 'Product 1'));
从购物车中移除
$rowId = 'da39a3ee5e6b4b0d3255bfef95601890afd80709';
CartProvider::instance()->remove($rowId);
获取购物车数据
//获取指定购物车条目数据
$rowId = 'da39a3ee5e6b4b0d3255bfef95601890afd80709';
CartProvider::instance()->get($rowId);
//获取购物车所有数据
CartProvider::instance()->content();
//获取总价(不包含运费)
CartProvider::instance()->subtotal();
//获取总价(包含运费)
CartProvider::instance()->total();
//获取购物车总条目数
CartProvider::instance()->count();
//搜索购物车是否包含指定条目
CartProvider::instance()->search(array('id' => 1, 'options' => array('size' => 'L')));
清空购物车
CartProvider::instance()->destroy();
更多使用方法请参考Syscover\Shoppingcart\Libraries\Cart类。
多个购物车实例
此外,本扩展包还支持多个购物车实例,你可以通过Cart::instance('newInstance')这种方式来指定实例名称:
CartProvider::instance('shopping')->add('192ao12', 'Product 1', 1, 9.99);
如果要切换,指定相应的实例名称即可:
Cart::instance('wishlist')->add('sdjk922', 'Product 2', 1, 19.95, array('size' => 'medium'));
默认的购物车实例名称是main,不指定实例名称时等同于使用main实例。
本节我们使用现成的扩展包来实现购物车,下一节我们将演示如何在Laravel中纯手工打造购物车功能。