saasify/shopping-cart

Laravel 的购物车包

9.0.0 2022-06-07 22:06 UTC

This package is not auto-updated.

Last update: 2024-09-18 14:45:20 UTC


README

一个简单的 Laravel 购物车。可能对 Saasify/Saasify 有所偏好,但对于其他项目也应该是可行的。

Run tests

Packagist Packagist Packagist

安装

通过 composer 安装

composer require saasify/cart

发布配置文件和迁移文件

如果需要,编辑 config/cart.php

php artisan vendor:publish --provider="Saasify\Cart\ServiceProvider"

运行迁移

php artisan migrate

概述

使用方法

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

Cart::add()

将商品添加到购物车。

$cartItem = Cart::add($id, $name, $price, $quantity);
$cartItem = Cart::add($id, $name, $price, $quantity, [
    'color' => 'white',
]);

Cart::remove()

从购物车中移除具有指定唯一 ID 的商品。唯一 ID 用于存储具有相同 $id 但不同 $options 的商品。

$cartItem = Cart::add($id, $name, $price, $quantity);

// ...

Cart::remove($cartItem->getUniqueId())

Cart::has()

检查购物车是否包含具有指定唯一 ID 的商品。

$cartItem = Cart::add($id, $name, $price, $quantity);

// ...

if (Cart::has($cartItem->getUniqueId())) {
    // Do smth.
}

Cart::get()

通过唯一 ID 获取购物车中的商品。

$cartItem = Cart::add($id, $name, $price, $quantity);

// ...

$cartItem = Cart::get($cartItem->getUniqueId());

Cart::content()

获取购物车中的所有商品。

Cart::clear()

清空购物车。

Cart::count()

返回购物车中商品的数量。此方法不汇总商品的数量。例如,购物车中有 3 本书和 1 部 iPhone,此方法返回 2。

Cart::getTotal()

返回购物车中所有商品的总价。

Cart::add(1, 'iPhone 7', 500, 1);
Cart::add(1, 'iPad Pro', 700, 2);
Cart::getTotal(); // return 1900

实例

该包支持购物车的多个实例。以下是一些示例

Cart::instance('shopping')->add('192ao12', 'Product 1', 100, 10);

// Store and get the content of the 'shopping' cart
Cart::store->content();

Cart::instance('wishlist')->add('sdjk922', 'Product 2', 50, 1, ['size' => 'medium']);

// Store and get the content of the 'wishlist' cart
Cart::store()->content();

// If you want to get the content of the 'shopping' cart again
Cart::instance('shopping')->restore()->content();

默认的购物车实例名为 default,因此当您不使用实例时,Cart::content();Cart::instance('default')->content() 相同。

Cart::instance()

设置当前实例名称。

Cart::currentInstance()

获取当前实例名称。

存储

目前有两种可能的存储方式来持久化购物车

  • 数据库
  • Redis

您可以通过指定配置中的存储库类名称来选择其中一种

// config/cart.php

'repository' => \Saasify\Cart\Repositories\CartDatabaseRepository::class,
// or
'repository' => \Saasify\Cart\Repositories\CartRedisRepository::class,

Cart::store()

将当前购物车实例持久化到存储中。

Cart::store($user->id);
Cart::instance('cart')->store($user->id);
Cart::instance('wishlist')->store($user->id);

Cart::restore()

将购物车实例恢复到存储中。

Cart::restore($user->id);
Cart::instance('cart')->restore($user->id);
Cart::instance('wishlist')->restore($user->id);

Cart::destroy()

从存储中移除购物车实例。

Cart::destroy($user->id);
Cart::instance('cart')->destroy($user->id);
Cart::instance('wishlist')->destroy($user->id);

优惠券

您可以轻松地将折扣优惠券添加到购物车。目前有两种类型的优惠券

  • FixedDiscountCoupon
  • PercentDiscountCoupon

相关方法

Cart::addCoupon()

将优惠券添加到购物车。

Cart::addCoupon(new FixedDiscountCoupon($name, $discount));
Cart::addCoupon(new PercentDiscountCoupon($name, 0.1)); // 10% discount

Cart::coupons()

返回所有优惠券。

Cart::getTotalWithCoupons()

返回应用优惠券后的总价。

Cart::add(1, 'iPhone 7', 500, 1);
Cart::add(1, 'iPad Pro', 700, 2);
Cart::addCoupon(new FixedDiscountCoupon($name, 300));
Cart::getTotal(); // return 1900 - 300 = 1600

安全

如果您发现任何安全相关的问题,请通过电子邮件 amelihovv@ya.ru 联系我们,而不是使用问题跟踪器。

鸣谢

原始开发者