mohammad-alavi/laravel-shoppingcart

v0.1.2 2021-03-23 12:01 UTC

This package is auto-updated.

Last update: 2024-09-15 23:21:35 UTC


README

Laravel购物车实现。

基于johannesschobel laravel-shoppingcart

安装

通过Composer安装此包。

composer require mohammadalavi/laravel-shoppingcart

然后,您只需使用以下命令添加提供的migration文件

php artisan vendor:publish --provider="MohammadAlavi\ShoppingCart\ShoppingCartServiceProvider" --tag="migrations"

然后,您使用以下命令迁移您的数据库

php artisan db:migrate

如果您想,您可以使用以下命令覆盖此包的基本配置

php artisan vendor:publish --provider="MohammadAlavi\ShoppingCart\ShoppingCartServiceProvider" --tag="config"

这将把shoppingcart配置文件复制到您的config文件夹中。使用此文件,您可以自定义包的各种参数。目前可用的并不多,但我将不断增加;)

用法

ShoppingCart门面提供了一些处理购物车的一些便捷方法。这些方法包括

从数据库中加载ShoppingCart

ShoppingCart::load($identifier, $name = null);

从数据库中加载带有identifiername的购物车。如果没有提供name,将使用默认名称default。如果不存在购物车,将返回一个空购物车。只要没有存储项目,这个购物车就保持临时状态。

清除ShoppingCart

ShoppingCart::clear();

从数据库中删除当前购物车实例。

向购物车添加项目

ShoppingCart::addItem(
   $id, 
   $name = null, 
   $type = null, 
   $qty = 1, 
   Money $price = null, 
   $uri = null, 
   array $options = []
);

此方法允许向购物车添加项目。基本用法允许您直接指定要设置的项目。例如

ShoppingCart::addItem(
   '1234', 
   'Basic T-Shirt', 
   'products', 
   10, 
   new Money(999, new Currency('EUR')), // note the value is added in cents! 
   '/products/1234', 
   ['size' => 'large', 'color' => 'black']
);

将添加10件“基本T恤”,每件成本9.99欧元到购物车。客户指定了颜色和尺寸。

然而,您可以将Buyable接口添加到您的产品中,以简化此过程。这需要您在模型上实现额外的方法(您可以通过添加CanBePurchased特性来“最佳猜测”)。

这将允许您仅添加一个特定的产品

$product = Product::find(1234); // remember, Product must implement the Buyable interface!
ShoppingCart::addBuyable(
   $product, 
   10, 
   ['size' => 'large', 'color' => 'black']
);

将得到与上面相同的购物车。但是,idnamepriceuri直接从模型中获取!

从购物车中删除项目

ShoppingCart::removeItem($row)

要从购物车中删除项目,您需要其rowId。此rowId可以通过例如使用ShoppingCart::load()ShoppingCart::getContent()方法获取。

$rowId = "30168b5f5a78bc48d08b4d5a125a9d90";
ShoppingCart::removeItem($rowId);

更新购物车中的项目

ShoppingCart::updateItem($row, $qty = 1, array $options = [])

允许您更新购物车中给定行。此rowId可以通过例如使用ShoppingCart::load()ShoppingCart::getContent()方法获取。

$rowId = "30168b5f5a78bc48d08b4d5a125a9d90";
ShoppingCart::updateItem($rowId, 1, ['color' => 'red']);

将更新项目的数量和选项(例如,要购买的产品将是“红色”而不是“黑色”)。

项目/价格/税

购物车还提供了一些方法来

  • 获取购物车中项目的数量 => getItemCount()
  • 获取购物车的内容。这返回购物车中的所有项目 => getContent()
  • 获取当前购物车的价值
    • 获取购物车的税费 => getTaxes()
    • 获取总额(包括税的价值)=> getTotal()
    • 获取小计(不含税的价值)=> getSubTotal()
  • 获取“相关”的Buyable模型 => resolveModel()