cyvelnet / laravel-easycart
一个简单易用且功能强大的 Laravel 购物车解决方案
Requires
- php: ^5.6|^7.0|^8.0
- illuminate/support: ^5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.0
Requires (Dev)
- mockery/mockery: 0.9.*
- orchestra/testbench: 3.4.*
- phpunit/phpunit: 5.7.* || ^8.0 || ^9.0
README
该项目仍在开发中,距离可用于生产还远。
安装
使用以下命令使用 Composer 安装此包
composer require cyvelnet/laravel-easycart
更新 composer 后,将 ServiceProvider 添加到 config/app.php 中的 providers 数组
Cyvelnet\EasyCart\EasyCartServiceProvider::class,
并在 aliases
数组中添加一行(可选)
'EasyCart' => Cyvelnet\EasyCart\Facades\EasyCart::class,
用法
EasyCart::add()
添加新产品或更新现有购物车项目的数量
// Add product to cart EasyCart::add($id, $name, $price, $qty); // Add product to cart with attributes & weight EasyCart::add($id, $name, $price, $qty, $attributes = [], $weight); // Add multiple products EasyCart::add([ [ 'id' => '1' 'name' => 'Product 1' 'price' => '199.99' 'qty' => '1', 'attributes' => ['color' => 'red'], 'weight' => 0.5 ], [ 'id' => '2' 'name' => 'Product 2' 'price' => '299.99' 'qty' => '1' ] ]);
EasyCart::update()
更新购物车项目
每个购物车项目都分配了一个唯一的 rowId,使用 cart item 上的
getRowId()获取 rowId
*
// update qty EasyCart::update($rowId, $qty); // update other EasyCart::update($rowId, [ 'attributes' => ['color' => 'green'], 'qty' => 2, 'price' => 399.99 ]);
EasyCart::remove()
从购物车中移除项目
EasyCart::remove($rowId);
EasyCart::get()
通过 rowId 获取行
EasyCart::get($rowId);
EasyCart::destroy()
完全清除购物车
EasyCart::destroy();
EasyCart::qty()
获取购物车中数量的总数。
EasyCart::qty();
EasyCart::subtotal()
获取在添加条件值之前的购物车小计,使用 EasyCart::total()
获取最终价格
EasyCart::subtotal();
EasyCart::total()
获取包含条件值计算的购物车总额
EasyCart::total();
EasyCart::items()
获取购物车项目 EasyCart::content() 是 EasyCart::items() 的别名
,返回 Cyvelnet\EasyCart\Collections\CartItemCollection
实例
EasyCart::items()
EasyCart::weight()
获取购物车总重量
EasyCart::weight()
过滤
EasyCart::find()
通过产品 ID 查找购物车项目,返回一个 Cyvelnet\EasyCart\CartItem
实例
EasyCart::find($id);
EasyCart::findByIds()
通过 ID 数组查找购物车项目,返回一个 Cyvelnet\EasyCart\Collections\CartItemCollection
实例
EasyCart::findByIds($ids = []);
条件
EasyCart 支持条件,这对于电子商务应用程序至关重要,无论是提供折扣还是添加附加价格都受支持。
EasyCart::condition()
添加条件很简单,只需实例化一个 Cyvelnet\EasyCart\CartCondition 对象即可。
// Add a 50% discount to cart $fiftyPercentDiscount = new CartCondition($name = '$50 Off', $value = '-50') // you have to use a - (minus sign) to indicate a discount is expected EasyCart::condition($fiftyPercentDiscount);
有时您只想对所选范围的产品提供折扣,而不是对整个购物车应用折扣,这很简单
$fiftyPercentDiscount = new CartCondition($name = '$50 Off', $value = '-50'); $fiftyPercentDiscount->onProduct([1,2,3,4]); EasyCart::condition($fiftyPercentDiscount);
生活并不总是容易,如果需要提供 20% 的折扣,但最高不超过 50 美元怎么办?
$fiftyPercentDiscount = new CartCondition($name = '20% Off', $value = '-20'); $fiftyPercentDiscount->maxAt(50); EasyCart::condition($fiftyPercentDiscount);
EasyCart::removeConditionByType()
按类型删除条件
EasyCart::removeConditionByType($type);
EasyCart::removeConditionByName()
按名称删除条件
EasyCart::removeConditionByName($name);
实例
EasyCart 支持多个实例,无需额外配置,只需将其指向实例即可,其工作方式与普通实例相同
EasyCart::instance('wishlist')->add($id, $name, $price, $qty); EasyCart::instance('wishlist')->destroy();
实例过期
有时需要购物车过期,可能是为了预订或其他用途,这在 EasyCart 中非常有用
// create a new instances with 15 minutes expiration EasyCart::instance('reservation', \Carbon::now()->addMinutes(15));
要验证购物车是否已过期,请使用 EasyCart::isExpired()
// check if a cart is expired EasyCart::instance('reservation')->isExpired();
由于您可能会使购物车过期,因此您可能还想创建一个倒计时
EasyCart::instance('reservation')->expirationTimestamp();