madlymint / shpcart
基于Cartify bundle的Laravel 4购物车包
Requires
- php: >=5.3.0
- illuminate/support: 4.*
This package is auto-updated.
Last update: 2024-09-25 15:29:30 UTC
README
#Shpcart 版本:Beta
A Shopping Cart Package for Laravel, based on the Cartify Bundle.
##安装
步骤1 将 "madlymint/shpcart": "1.1.*@dev" 添加到你的 composer.json 文件的 require 属性中(需要你在命令行中运行 php composer.phar update)
步骤2 将 'Madlymint\Shpcart\ShpcartServiceProvider' 添加到 app/config/app.php 文件中的服务提供者列表中
步骤3(可选) 将 'Shpcart' => 'Madlymint\Shpcart\Facades\Shpcart' 添加到 app/config/app.php 文件中的类别名列表中
发布资产
php artisan asset:publish madlymint/shpcart
现在访问 http://yoursite.com/shpcart,你应该能看到示例产品页面。
##向购物车中添加项目
####向购物车添加单个项目 要将项目添加到购物车,只需将包含产品信息的数组传递给 Shpcart::cart()->insert() 方法,如下所示
$item = array( 'id' => 'sku_123ABC', 'qty' => 1, 'price' => 39.95, 'name' => 'T-Shirt', 'options' => array( 'size' => 'L', 'color' => 'Red' ) ); Shpcart::cart()->insert($item);
####向购物车添加多个项目 通过使用多维数组,如以下所示,可以一次性将多个项目添加到购物车中。这在您希望允许人们在同一页面上从多个项目中选择时很有用。
$items = array( array( 'id' => 'sku_123ABC', 'qty' => 1, 'price' => 39.95, 'name' => 'T-Shirt', 'options' => array( 'size' => 'L', 'color' => 'Red' ) ), array( 'id' => 'sku_567ZYX', 'qty' => 1, 'price' => 9.95, 'name' => 'Coffee Mug' ), array( 'id' => 'sku_965QRS', 'qty' => 1, 'price' => 29.95, 'name' => 'Shot Glass' ) ); Shpcart::cart()->insert($items);
####重要:上述前四个数组索引(id、qty、price 和 name)是必需的。如果您省略了其中任何一个,数据将不会保存到购物车中。第五个索引(options)是可选的。它旨在用于您的产品具有关联选项的情况。使用数组作为选项,如上所示。
预留的五个索引是
- id - 您商店中的每个产品都必须有一个唯一的标识符。这通常将是“sku”或其他此类标识符。
- qty - 购买的数量。
- price - 项目的价格。
- name - 项目的名称。
- options - 需要用于标识产品的任何其他属性。这些必须通过数组传递。
除了上述五个索引之外,还有两个预留单词:rowid 和 subtotal。这些是在将数据插入购物车时由购物车类内部使用的,所以请勿将这些单词用作索引名称。
您的数组可以包含其他数据。您在数组中包含的任何内容都将存储在会话中。但是,最好在您所有产品中标准化您的数据,以便更容易在表中显示信息。
如果成功插入单个项目,insert() 方法将返回 $rowid。
##更新购物车项目 要更新购物车中的信息,您必须将包含行 ID 和数量的数组传递给 Shpcart::cart()->update() 方法
####注意:如果数量设置为零,项目将从购物车中删除!
####更新单个项目
$item = array( 'rowid' => 'b99ccdf16028f015540f341130b6d8ec', 'qty' => 3, 'options' => array( 'size' => 'M', 'color' => 'Red' ) ); Shpcart::cart()->update($item);
####更新多个项目
$items = array( array( 'rowid' => 'b99ccdf16028f015540f341130b6d8ec', 'qty' => 3, 'options' => array( 'size' => 'M', 'color' => 'Red' ) ), array( 'rowid' => 'xw82g9q3r495893iajdh473990rikw23', 'qty' => 4 ), array( 'rowid' => 'fh4kdkkkaoe30njgoe92rkdkkobec333', 'qty' => 2, 'options' => array( 'color' => 'Yellow' ) ) ); Shpcart::cart()->update($items);
####什么是行 ID?行 ID 是当项目被添加到购物车时由购物车代码生成的唯一标识符。创建唯一 ID 的原因是可以管理具有不同选项的相同产品。
例如,假设有人购买了两个相同的产品(相同的产品ID),但尺寸不同。由于是同一件衬衫,两个尺寸的产品ID(以及其他属性)将相同。唯一的不同之处在于尺寸。因此,购物车必须有一种方法来识别这种差异,以便可以独立管理这两种尺寸的衬衫。它通过根据产品ID及其相关选项创建一个唯一的“行ID”来实现。
在几乎所有情况下,更新购物车将是用户通过“查看购物车”页面进行的,因此作为开发者,你很可能永远不会需要担心“行ID”,除非确保你的“查看购物车”页面包含这个信息,并在更新表单提交时确保将其传递给更新函数。请查看以下“查看购物车”页面的构造以获取更多信息。
##从购物车中删除项目 要从购物车中删除项目,您必须将行ID传递给Shpcart::cart()->remove()方法
Shpcart::cart()->remove('fh4kdkkkaoe30njgoe92rkdkkobec333');
##显示购物车 要显示购物车,您将创建一个类似于cart.blade.php视图文件的视图文件。
函数参考
Shpcart::cart()->item(rowid)
返回购物车中某项商品的所有信息。
Shpcart::cart()->insert();
允许您向购物车添加商品。
Shpcart::cart()->update();
允许您更新购物车中的商品。
Shpcart::cart()->remove(rowid);
允许您从购物车中删除商品。
Shpcart::cart()->total();
显示购物车中的总金额。
Shpcart::cart()->total_items();
显示购物车中的商品总数。
Shpcart::cart()->contents();
返回包含购物车中所有内容的数组。
Shpcart::cart()->has_options(rowid);
如果购物车中的某行包含选项,则返回TRUE(布尔值)。该函数旨在与Shpcart::cart()->contents()一起使用,因为您必须像上面显示的显示购物车示例那样传递rowid。
Shpcart::cart()->item_options(rowid);
返回特定商品的选项数组。该函数旨在与Shpcart::cart()->contents()一起使用,因为您必须像上面显示的显示购物车示例那样传递rowid。
Shpcart::cart()->destroy();
允许您销毁购物车。当您完成处理客户的订单时,可能会调用此函数。
购物车的多个实例
可以创建购物车类的多个实例。
您只需要传入购物车的名称,如下所示
Shpcart::cart('my_other_cart')->insert($item);
还包括Whishlist方法来帮助您,您甚至可以创建多个Whishlist,如下所示
Shpcart::wishlist()->insert($item); Shpcart::wishlist('my_other_wishlist')->insert($item);
##异常
购物车库中的一些方法抛出异常,以下列出了所有异常。
Shpcart\CartException
当发生意外错误时抛出此异常。
Shpcart\CartInvalidDataException
当插入或更新购物车商品时未传递数组时抛出此异常。
Shpcart\CartItemNotFoundException
当购物车中找不到商品时抛出此异常。
Shpcart\CartRequiredIndexException
当数组中缺少必需的索引时抛出此异常。
Shpcart\CartInvalidItemRowIdException
当商品行ID无效时抛出此异常。
Shpcart\CartInvalidItemQuantityException
当数量无效时抛出此异常。
Shpcart\CartInvalidItemPriceException
当商品价格无效时抛出此异常。
To better understand on how to use the Exceptions, you can check the example controllers.
鸣谢
Bruno Gaspar 为创建Cartify捆绑包。
Twitter for the awesome Bootstrap framework.