在CakePHP中写入Session不会保存

时间:2014-04-25 15:33:20

标签: jquery ajax cakephp

刚刚解决了一个问题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 {....}

1 个答案:

答案 0 :(得分:0)

已解决:教程中存在拼写错误,readProduct()函数开头应为read()而非addProduct