binafy/laravel-cart

Laravel Cart是一个可定制的包,用于向Laravel应用程序添加购物车功能

v1.0.9 2024-08-15 16:19 UTC

This package is auto-updated.

Last update: 2024-09-25 13:48:06 UTC


README

binafy-laravel-cart

PHP Version Require Latest Stable Version Total Downloads License Passed Tests

简介

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)。有关更多信息,请参阅许可文件