binafy/laravel-cart
Laravel Cart是一个可定制的包,用于向Laravel应用程序添加购物车功能
Requires
- php: ^8.0
- laravel/framework: ^9.0|^10.0|^11.0
Requires (Dev)
- laravel/pint: ^1.5
- orchestra/testbench: ^7.0|^8.0|^9.0
- pestphp/pest-plugin-laravel: ^1.4.0|^2.0.0
README
简介
Laravel Cart
是一个高度可定制和灵活的包,它将购物车功能集成到您的Laravel应用程序中。它简化了购物车项的存储和管理,支持多种商品类型和数量。它非常适合电子商务平台创建购物车、附加商品并高效管理。通过Composer安装简单,并提供强大的功能,如安全存储商品、轻松操作购物车以及与现有Laravel应用程序的无缝集成。
功能
Laravel Cart
包是开发者在他们的基于Laravel的电子商务应用程序中实施可靠和可扩展的购物车系统的理想选择
- 商品管理:通过直观的API轻松添加、更新和从购物车中删除商品。
- 属性和选项:为购物车商品定义自定义属性和选项,以处理大小和颜色等变体。
- 税务计算:内置支持税务计算,允许根据预定义的规则自动应用税务。
- 折扣和优惠券:集成折扣代码和优惠券功能,向客户提供促销和特别优惠。
- 会话和数据库存储:灵活的存储选项,允许将购物车存储在会话或数据库中。
- 事件和监听器:通过监听器连接到各种购物车事件,执行如记录或触发附加业务逻辑等操作。
- 可定制:扩展和定制核心功能以满足特定业务需求。
- 易于集成:设计用于与现有Laravel项目无缝集成,提供顺畅的开发体验。
安装
您可以使用Composer安装此包
composer require binafy/laravel-cart
发布
如果您想发布配置文件,可以使用此命令
php artisan vendor:publish --tag="laravel-cart-config"
如果您想发布迁移,可以使用此命令
php artisan vendor:publish --tag="laravel-cart-migrations"
为了方便,您可以使用此命令发布配置、迁移和...文件
php artisan vendor:publish --provider="Binafy\LaravelCart\Providers\LaravelCartServiceProvider"
发布后,运行php artisan migrate
命令。
用法
配置
您可以使用位于config
文件夹中的laravel-cart.php
配置文件配置Laravel Cart
。
Laravel Cart外观
为了方便,您可以使用Laravel Cart外观来存储、删除...
<?php use Binafy\LaravelCart\LaravelCart; LaravelCart::driver('session')->storeItem($item, $userId|null); LaravelCart::storeItem($item $userId|null);
驱动
如果您想使用Laravel Cart外观,您可以根据需要更改存储、删除...的驱动程序
<?php use Binafy\LaravelCart\LaravelCart; LaravelCart::driver('database')->storeItem($item, $userId|null); LaravelCart::driver('session')->removeItem($item);
默认驱动程序是
database
,如果您想更改驱动程序,您需要使用位于config\laravel-cart.php
的Laravel Cart配置文件。
支持驱动
Laravel Cart模型
此外,您还可以使用Laravel Cart模型与Laravel Eloquent进行检索或...
存储购物车
要存储新的购物车,您可以使用Cart
模型
use \Binafy\LaravelCart\Models\Cart; $cart = Cart::query()->firstOrCreate(['user_id' => $user->id]);
访问可商品化
如果您想访问CartItem
中的可商品化,您可以使用itemable
关系
$cartItem = new CartItem([ 'itemable_id' => $itemable->id, 'itemable_type' => $itemable::class, 'quantity' => 1, ]); $cartItem->itemable()->first(); // Return Model Instance
使用存储项目创建购物车
要为购物车存储商品,您需要实现模型中的
Cartable
接口。
use Binafy\LaravelCart\Cartable; class Product extends Model implements Cartable { public function getPrice(): int { // } }
之后,您可以使用多种方式存储商品
Cart::query()->firstOrCreateWithStoreItems( item: $product, quantity: 1, userId: $user->id );
存储多个商品
如果您要为购物车存储多个商品,您可以使用storeItems
方法
$items = [ [ 'itemable' => $product1, 'quantity' => 2, ], [ 'itemable' => $product2, 'quantity' => 1, ], [ 'itemable' => $product3, 'quantity' => 5, ], ]; $cart = Cart::query()->firstOrCreate(['user_id' => $user->id]); $cart->storeItems($items);
为购物车存储商品
如果您想为购物车存储商品,首先您需要创建一个购物车并将商品附加到购物车中
$cart = Cart::query()->firstOrCreate(['user_id' => $user->id]); $cartItem = new CartItem([ 'itemable_id' => $itemable->id, 'itemable_type' => $itemable::class, 'quantity' => 1, ]); $cart->items()->save($cartItem);
如果您想访问一个购物车中的项目,您可以使用存在于购物车模型中的items
关系。
为了方便,您可以使用storeItem
方法。此方法接受一个模型或数组。
$cart = Cart::query()->firstOrCreate(['user_id' => $user->id]); // Model $cart->storeItem($itemable); // Array $item['itemable'] = $itemable; $item['quantity'] = 1; $cart->storeItem($item);
从购物车中删除商品
如果您想删除购物车中的一个项目,您可以使用removeItem
方法。
$items = [ [ 'itemable' => $product1, 'quantity' => 2, ], [ 'itemable' => $product2, 'quantity' => 1, ], [ 'itemable' => $product3, 'quantity' => 5, ], ]; $cart = Cart::query()->firstOrCreate(['user_id' => $user->id]); $cart->removeItem($product1);
从购物车中删除所有商品
如果您想删除购物车中的所有项目,您可以使用emptyCart
方法。
$items = [ [ 'itemable' => $product1, 'quantity' => 2, ], [ 'itemable' => $product2, 'quantity' => 1, ], [ 'itemable' => $product3, 'quantity' => 5, ], ]; $cart = Cart::query()->firstOrCreate(['user_id' => $user->id]); $cart->emptyCart();
增加数量
如果您想增加购物车中项目的数量,您可以使用increaseQuantity
方法。
$cart->increaseQuantity(item: $item, quantity: 2); // By default quantity is 1
减少数量
如果您想减少购物车中项目的数量,您可以使用decreaseQuantity
方法。
$cart->decreaseQuantity(item: $item, quantity: 2); // By default quantity is 1
可用事件
Laravel Cart
有一些事件,您可以监听这些事件并进行一些操作。
贡献者
感谢所有贡献者。贡献者。
安全
如果您发现任何与安全相关的问题,请发送电子邮件至binafy23@gmail.com
,而不是使用问题跟踪器。
变更日志
变更日志可以在GitHub仓库的CHANGELOG.md
文件中找到。它列出了对Laravel用户监控包每个版本所做的更改、错误修复和改进。
许可
MIT许可(MIT)。有关更多信息,请参阅许可文件。