Session CakePHP序列化对象

Session CakePHP序列化对象,session,cakephp,serialization,Session,Cakephp,Serialization,我遇到了以下问题: 我有一个类CartItem。我想在会话中存储CartItem的对象数组(实际上我正在实现一个购物车) 我试过这个: function addToCart(){ $this->loadModel("Cart"); $this->layout = false; $this->render(false); $cart = array(); $tempcart = unserialize($this->Sessi

我遇到了以下问题: 我有一个类CartItem。我想在会话中存储CartItem的对象数组(实际上我正在实现一个购物车)

我试过这个:

function addToCart(){

    $this->loadModel("Cart");

    $this->layout = false;
    $this->render(false);

    $cart = array();

    $tempcart = unserialize($this->Session->read("cart")); 

    if(isset($tempcart)){
        $cart = $tempcart;
    }

    $productId = $this->request->data("id");

    if(!$this->existsInCart($cart, $productId)){

        $cartItem = new Cart();

        $cartItem->productId = $productId;
        $cartItem->createdAt = date();

        $cart[] = $cartItem;

        $this->Session->write("cart", serialize($cart));

        echo "added";
    }
    else
        echo "duplicate";
}
我想我把这些话写错了:

$tempcart = unserialize($this->Session->read("cart"));

$this->Session->write("cart", serialize($cart));

因为我没有从会话中获取数据。

您正在尝试将整个
购物车
对象添加到会话中

您应该只添加一个数组,如

$cart[] = array(
    'productId' => $productId,
    'createdAt' => date('Y-m-d H:i:s')
);

如果需要将对象添加到会话中,可以使用,但我认为在这种情况下,最好只将产品id和日期添加到会话中。

查看正确的购物车实现感谢Cornelb的成功,但我想知道,我们不能在会话中存储对象数组吗(比如在Jvaa中实现Serializable接口)
$cart[] = array(
    'productId' => $productId,
    'createdAt' => date('Y-m-d H:i:s')
);