cyvelnet/laravel-easycart

一个简单易用且功能强大的 Laravel 购物车解决方案

v1.0.0 2022-03-02 04:12 UTC

This package is auto-updated.

Last update: 2024-08-29 04:31:24 UTC


README

StyleCI Build Status Total Downloads Latest Stable Version Latest Unstable Version License

该项目仍在开发中,距离可用于生产还远。

安装

使用以下命令使用 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();