Session CakePHP序列化对象
我遇到了以下问题: 我有一个类CartItem。我想在会话中存储CartItem的对象数组(实际上我正在实现一个购物车) 我试过这个: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
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')
);