kicaj / cart

CakePHP 的购物车插件,无需重建现有结构

维护者

详细信息

github.com/kicaj/cart

首页

源代码

问题

安装: 265

依赖项: 0

建议: 0

安全性: 0

星标: 0

关注者: 2

分支: 1

开放性问题: 3

类型:cakephp-plugin

dev-master 2023-02-03 23:19 UTC

This package is auto-updated.

Last update: 2024-09-30 01:16:20 UTC


README

注意:它仍在开发模式中,请勿在生产环境中使用!

要求

本插件是为 CakePHP 至少 4.3 版本开发的。

安装

您可以使用 composer 将插件安装到您的 CakePHP 应用程序中。

安装 composer 包的推荐方法是

composer require kicaj/cart dev-master

加载插件

确保在您的 src/Application.php 文件中加载了 Cart 插件

$this->addPlugin('Cart');

或者通过 cake 命令手动添加

cake plugin load Cart

配置

首先,使用迁移插件在您的数据库中创建表。

cake migrations migrate -p Cart

现在,如果一切正常,您可以打开带有片段 localhost/app/cart/carts 的 URL,您应该看到 "购物车为空"。

接下来,您应该设置全局关联以使用 Cart 插件与您的产品交互。

// AppController::initialize()
public function initialize()
{
    parent::initialize();
        
    // ...
        
    // Cart relations.
    $this->loadModel('Cart.Carts');
        
    $this->Carts->CartItems->addAssociations([
        'belongsTo' => [
            'CartItemProducts' => [
                'className' => 'Products', // Class name of existing table of your products
                'type' => 'INNER',
                'foreignKey' => 'identifier',
                'bindingKey' => 'sku', // Unique key for your product (eg. SKU number)
            ],
        ],
    ]);
}   

您最后应该做的事情是在产品视图中添加 "添加到购物车" 按钮。
打开产品视图,可能是 src/Template/Products/view.ctp,并加载单元格

echo $this->cell('Cart.Cart::add', [$product->sku]); // First argument is product unique identiefier

再次检查 localhost/app/cart/cars

就这么多了!

故障排除

  1. 当我点击 "添加到购物车" 按钮时,我得到了消息 "SQLSTATE[23000]: 约束违规:1048 列 'price' 不能为空"。
    如果您的关联表(例如 products)中没有 price 列,您可以在 /Model/Entity/Product.php 中设置虚拟属性。
protected $_virtual = ['price'];

protected function _getPrice()
{
    return $this->cost; // Field cost (or value, amout, etc.) in Your table
}