我遇到了以下问题: 我有一个班级 CartItem 。我想在会话中存储CartItem的对象数组(实际上我实现了购物车)。
class CartItem extends AppModel{
var $name = "CartItem";
var $useTable = false;
}
我试过了:
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));
因为我没有从会话中获取数据。
答案 0 :(得分:1)
您正在尝试将整个Cart
对象添加到会话中。
你应该添加一个数组,比如
$cart[] = array(
'productId' => $productId,
'createdAt' => date('Y-m-d H:i:s')
);
如果您需要向会话添加对象,可以使用__sleep and __wakeup magic functions但我认为在这种情况下,最好只将产品ID和日期添加到会话中。