2013-12-12 125 views
5

我试图在购物车中添加产品,但购物车保持空白。 这里是我的代码以编程方式将产品添加到购物车中 - 空购物车

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(); 
} 

当我打印的incremanting $cart->getItemsQty()我的项目数量,但我的车仍然是空的。我认为这是Mage::getSingleton('checkout/session')->setCartWasUpdated(true);,无法正常工作。

任何人有什么不工作的想法?

编辑1:我用Magento的1.8.0,所以通过URL查询不工作,因为form_key的

回答

1

试图改变

$cart = Mage::getModel('checkout/cart'); 

$cart = Mage::getSingleton('checkout/cart'); 

的购物车一个单身人士,因为你的商店只有一个购物车有一个用户,所有想要使用它的人都可以把它叫做getSingleton,而不需要创建新的对象。如果你使用Mage :: getModel('checkout/cart'),它会创建一个新的对象。嗯,它可以让你保存对DB的报价,但这不会是当前活跃的客户购物车。

+0

如何获得客户的购物车? – Camital

+2

您是否按照我的建议更改脚本?要获取当前的客户购物车,请使用Mage :: getSingleton('checkout/cart') - > getQuote();或者Mage :: getSingleton('checkout/session') - > getQuote(); – freento

+0

是的,我做了,我的购物车仍然是空的 – Camital

1

您需要刷新Itemcollection的itemcache。因为这也将从中删除报价型号,所以必须在此之后添加

$cart->getItems()->clear(); 
$cart->getItems()->setQuote($cart->getQuote()); 
相关问题