通过 ShoppingCart 扩展包在 Laravel 5.2 中快速实现购物车功能
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中纯手工打造购物车功能。
9 Comments
lumen可以用这种方法快速实现购物车吗?
数据都保存到了哪里了呢