0
只是解決了一個問題here,現在另一...寫入會議CakePHP中不保存
正如前面提到的,我下面this tutorial創建使用CakePHP,Ajax和引導一個簡單的購物車。
我知道了,除了爲在大部分看起來雖然這添加到購物車中的項目不保存工作。我可以添加一個項目,移動網站,甚至改變它的數量,它保持原樣 - 但是,當我嘗試添加另一個項目 - 第二個項目只是完全覆蓋第一個項目。
這是增加一個項目時運行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 {....}
'$ this-> read()'是什麼? – Ross
爲什麼你使用'CakeSession'而不是[Session Component](http://book.cakephp.org/2.0/en/core-libraries/components/sessions.html)? – Nunser
看起來像一個邏輯錯誤。除非你重新定義了'$ this-> read()' - 當你調用它時,你會得到返回的_one_項的數據。然後用該項目的數據覆蓋會話數據。 @Nunser模型中沒有會話組件;儘管有一個靜態會話接口。 – AD7six