kicaj / cart
CakePHP 的购物车插件,无需重建现有结构
dev-master
2023-02-03 23:19 UTC
Requires
- cakephp/cakephp: ^4.3
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
!
就这么多了!
故障排除
- 当我点击 "添加到购物车" 按钮时,我得到了消息 "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
}