刚刚在这里解决了一个问题,现在又解决了...
如前所述,我将按照本教程使用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
Controller中的Function调用:
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 {....}
解决:有教程一个错字,应该是readProduct()
没有read()
在开始addProduct
功能。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句