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中纯手工打造购物车功能。

时间: 2024-10-09 09:51:40

Laravel 5.2 中快速实现购物车功能例子的相关文章

WORD中的邮件合并功能来快速制作通知书

  WORD中的邮件合并功能来快速制作通知书            1.首先建立一个excel表:a.xlsx 2.建一个word模板b.docx 3.邮件-开始邮件合并-信函 4.选择联系人-使用现有列表 5.选择需要引用的EXCEL a.xlsx 6.默认确定 7.将光标放置同学前 点插入合并域-姓名,此类推插入编号.学院.专业 8.效果如下 9.点击阅览结果 效果如下图

在IE9中如何启用快速导航选项卡功能

在IE8中,打开多个选项卡时,选项卡栏最左侧会出现一个"快速导航选项卡",如下图所示,但升级到IE9后却发现没有该选项卡了,按快捷键"Ctrl + Q"也没有反应. 这是由于 Windows 7 任务栏上的缩略图预览能够很好地实现快速导航的功能,所以IE9的"快速导航"功能被隐藏了起来.以使界面更简洁,也为网页内容留下更多展示空间. IE8浏览器中的"快速导航选项卡"按钮 更简洁的IE9操作栏 不过,如果总是打开很多选项卡,超

excel中怎么利用缩放功能快速设置打印页面?

  excel中怎么利用缩放功能快速设置打印页面?高效的利用页面设置,进行打印不仅能够提高工作效率,更能够节约纸张. 1.在打印的过程中,经常遇到这样的情况,页面设置好后,打印预览之后会发现,最后一页只有很少的内容,可以少打印一张,这就必须重新调整页边距,这样不仅仅是麻烦的问题,而且你调整来,调整去,总感觉不合适.举例说明,如图,我们会发现这个文件,打印的时候第三页的内容很少,可以用两页纸进行打印. 2.打开"页面设置"对话框,在"缩放"功能下"调整为&q

Windows 8 中关闭快速启动开机功能?

  快速启动时一项帮助电脑在关机之后更快速启动的设置. Windows 在关机时将系统信息保存到一个文件中来实现快速启动.当您再次启动电脑时, Windows 使用该系统信息来恢复您的电脑,而不是重新启动它. 快速启动设置不适用于"重新启动".您需要关机,然后再次启动电脑才能快速启动生效. 默认情况下,在 Windows 中快速启动处于启用状态. 操作步骤: 1.在系统桌面,左键点击右下角系统自带"电池"图标,出现如下界面,选择更多"电源选项";

数量改变-实现购物车功能中,商品数量增减和选择结算商品时的问题

问题描述 实现购物车功能中,商品数量增减和选择结算商品时的问题 如图,现在购物车的商品增减已实现,可是数量改变但界面上的显示仍是之前的数字,在适配器中写了点击事件,也在点击之后调用了notifyDataSetChanged();方法,仍不起作用: 选择商品,下面金额发生改变,可是再点击总金额应减少,可是我做的第一次点击增加,第二次的时候应该减少金额,当仍继续增加,不知道有人遇到过吗?试过多次,已经没思路了 解决方案 帖子被盖在下面了,你再多发一次,会有大神看见的! 解决方案二: 这个是js问题

购物车功能-关于android中购物车的功能实现

问题描述 关于android中购物车的功能实现 在页面里将物品加入购物车,怎么才能将数据传入购物车里,使购物车物品增多呢? 解决方案 http://www.cnblogs.com/hongten/archive/2012/12/26/hongten_cookies.html 之前没有接触过购物车的东东,也不知道购物车应该怎么做,所以在查询了很多资料,总结一下购物车的功能实现. 查询的资料,找到三种方法: 1.用cookie实现购物车: 2.用session实现购物车: 3.用cookie和数据库

jsp-JSP购物车功能不能修改数量

问题描述 JSP购物车功能不能修改数量 在servlet做了修改数量的几个验证,原本修改为正确的数量值都是没问题的,但现在不知道怎么回事,突然就不可以了,修改数量后,弹出是否确认修改的窗口,点击确认后,值还是之前的值,发现并没有把值提交给servlet,.后天要交,好急呀..以下是代码:第一块代码块是jsp的修改页面,数量修改后,提交到servlet <form action=""${pageContext.request.contextPath}/servlet/Manager

ASP.NET 2.0 中的异步页功能应用

asp.net|异步 下载本文源代码:WickedCode0510.exe ASP.NET 2.0 提供了大量新功能,其中包括声明性数据绑定和母版页,成员和角色管理服务等.但我认为最棒的功能是异步页,接下来让我告诉您其中的原因. 当 ASP.NET 接收针对页的请求时,它从线程池中提取一个线程并将请求分配给该线程.一个普通的(或同步的)页在该请求期间保留线程,从而防止该线程用于处理其他请求.如果一个同步请求成为 I/O 绑定(例如,如果它调用一个远程 Web 服务或查询一个远程数据库,并等待调用

Flash 8 中的位图缓存功能

缓存 在以前版本的Flash中如果有大面积.多数量.复杂的图形在影片中移动的时候,往往会出现运动不流畅的现象,现在在Flash 8中添加的位图缓存功能就解决了这样的问题! 在将 MovieClip.cacheAsBitmap 或 Button.cacheAsBitmap 属性设置为 true 时,Flash Player 将缓存影片剪辑或按钮实例的内部位图表示形式.这可以提高包含复杂矢量内容的影片剪辑的性能.具有已缓存位图的影片剪辑的所有矢量数据都会被绘制到位图而不是主舞台上. 利用Action