刚刚解决了一个问题here,现在是另一个问题......
如前所述,我跟随this tutorial使用CakePHP,Ajax和Bootstrap创建一个简单的购物车。
我大部分都在使用它,除了虽然添加到购物车中的商品没有保存。我可以添加商品,在网站上移动甚至改变它的数量并保持不变 - 但是,当我尝试添加另一个项目时 - 第二个项目只是完全覆盖了第一个项目。
这是添加项目时运行的CakePHP购物车模型功能:
public function addProduct($productId) {
$allProducts = $this->read();
if (null!=$allProducts) {
if (array_key_exists($productId, $allProducts)) {
$allProducts[$productId]++;
} else {
$allProducts[$productId] = 1;
}
} else {
$allProducts[$productId] = 1;
}
$this->saveProduct($allProducts);
}
public function saveProduct($data) {
return CakeSession::write('cart',$data);
}
由控制器中的add
函数调用:
public function add() {
$this->autoRender = false;
if ($this->request->is('post')) {
$this->Cart->addProduct($this->request->data['Cart']['product_id']);
}
echo $this->Cart->getCount();
}
我的购物车模型在开始时看起来像这样:
<?php
App::uses('AppModel', 'Model');
App::uses('CakeSession', 'Model/Datasource');
class Cart extends AppModel {....}
答案 0 :(得分:0)
已解决:教程中存在拼写错误,readProduct()
函数开头应为read()
而非addProduct
。