我正在尝试在购物车中添加产品,但购物车保持空白。 这是我的代码
try{
$product_model = Mage::getSingleton('catalog/product');
// Load product
$_sku = "1-574#AD-B00731";
$my_product_id = $product_model->getIdBySku($_sku);
$my_product = $product_model->load($my_product_id);
$qty_value = 1;
// Add to cart
$cart = Mage::getModel('checkout/cart');
$cart->init();
$cart->addProduct($my_product, array('qty' => $qty_value));
$cart->save();
print_r($cart->getItemsQty().PHP_EOL);
Mage::getSingleton('checkout/session')->setCartWasUpdated(true);
var_dump("working");
}
catch(Exception $e){
return $e->getMessage();
}
当我打印$cart->getItemsQty()
时,我的商品数量增加但我的购物车仍然是空的。我认为Mage::getSingleton('checkout/session')->setCartWasUpdated(true);
无法正常工作。
有人知道什么不起作用吗?
编辑1:我使用Magento 1.8.0,因此通过url查询因form_key
而无效答案 0 :(得分:1)
尝试更改
$cart = Mage::getModel('checkout/cart');
到
$cart = Mage::getSingleton('checkout/cart');
购物车是一个单身人士,因为您的商店中只有1个购物车可供1个用户使用,所有想要使用它的人都可以将其称为getSingleton,而无需创建新对象。如果你使用Mage :: getModel('checkout / cart'),它将创建一个新对象。是的,它允许您将报价保存到DB,但这不是当前活跃的客户购物车。
答案 1 :(得分:1)
您需要刷新Itemcollection的itemcache。因为这也会从中删除引用模型,所以必须在之后添加
$cart->getItems()->clear();
$cart->getItems()->setQuote($cart->getQuote());