darthsoup/shoppingcart

Laravel 5 购物车

2.1.0 2020-12-31 00:33 UTC

README

Total Downloads License

为 Laravel > 6 提供一个简单的购物车实现。基于 Gloudemans\Shoppingcart 的工作。

功能

此购物车包提供以下功能:

  • 购物车项目可以有子项目
  • 自定义项目标识符的哈希算法
  • 单个项目的单独征税
  • 数据库支持

安装

要获取最新版本,只需使用 Composer 引入库。

$ composer require darthsoup/shoppingcart

安装后,您需要发布供应商资产

$ php artisan vendor:publish --provider="DarthSoup\Cart\CartServiceProvider" --tag="config"

这将创建 cart.php 配置文件。

使用方法

购物车包提供了以下方法供您使用:

添加项目

/**
 * Add a Item to the cart.
 *
 * @param string|array $id Unique ID of the item|Item formatted as array|Array of items
 * @param string $name Name of the item
 * @param int $quantity Item quantity to add to the cart
 * @param float $price Price of one item
 * @param array $options Array of additional options, such as 'size' or 'color'
 */

// Basic form
Cart::add('1', 'Product One', 1, 9.99, ['option_key' => 'option_value']);

// Array form
Cart::add(['id' => 'mail1000', 'name' => 'Mail Package One', 'quantity' => 5, 'price' => 4.99, 'options' => []]);

// Batch method
Cart::add([
    ['id' => '15', 'name' => 'Hamburger', 'quantity' => 1, 'price' => 1.99],
    ['id' => '16', 'name' => 'Cheeseburger', 'quantity' => 1, 'price' => 2.49, 'options' => ['onion' => false]]
]);

您也可以通过手动创建来制作项目

$item = new \DarthSoup\Cart\Item('15', 'Hamburger', 1.99, ['onion' => false]);

Cart::add($item);

更新一个项目

Cart::update('rowId', [
    'options' => ['foo' => 'bar']
]);

获取一个购物车项目

Cart::get('rowId');

显示购物车内容

通过返回购物车集合来显示购物车内容

Cart::content();

清空购物车

Cart::destroy();

删除一个项目或子项目

Cart::remove('rowId');

所有项目的总价

Cart::total();

项目数量

Cart::count();

子项目

此包还包括通过将它们添加到项目中的附加集合来添加子项目的功能。

添加子项目

addSubItem 函数基本上与 add 函数类似,但在末尾接受一个父行 ID 以向项目添加子项目。

$hamburger = Cart::add('15', 'Hamburger', 1, 1.99, ['onion' => false]);

Cart::addSubItem('99', 'Extra Bacon', 1, 0.99, [], $hamburger->getRowId());

删除子项目

与删除常规项目类似,只需包含您的子项目 rowId,它将从父项目中删除。

模型

一个新功能是将模型与购物车中的项目关联起来。假设您在应用程序中有一个 Product 模型。通过使用 associate() 方法,您可以告诉购物车购物车中的某个项目与 Product 模型相关联。

这样,您就可以直接从 CartCollection 访问您的模型!

以下是一个示例

<?php 

Cart::associate(\App\Product::class)->add('15', 'Hamburger', 1, 9.99, ['extra_sauce' => true]);

$content = Cart::content();

foreach ($content as $row) {
	echo 'You have ' . $row->quantity . ' items of ' . $row->model->name . ' with description: "' . $row->model->description . '" in your cart.';
}

使用键 model 访问您关联的模型。

异常

如果出现问题,购物车包将抛出异常。这样,在调试使用购物车包的代码或根据异常类型处理错误时会更简单。购物车包可以抛出以下异常

事件

购物车还内置了事件。有五个事件可供您监听。

贡献

请使用 Github 报告错误、发表评论或提出建议。有关如何贡献更改的说明,请参阅 CONTRIBUTING.md