2013-12-12 123 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()); 
相關問題