2013-12-12 17 views
5

Tôi đang cố thêm sản phẩm vào giỏ hàng nhưng giỏ hàng vẫn trống. Dưới đây là mã của tôiLập trình thêm sản phẩm trong giỏ hàng - giỏ hàng trống

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

Khi tôi in $cart->getItemsQty() lượng mặt hàng của tôi đang incremanting nhưng giỏ hàng của tôi vẫn còn trống. Tôi nghĩ rằng đó là Mage::getSingleton('checkout/session')->setCartWasUpdated(true); không hoạt động đúng cách.

Bất kỳ ai có ý tưởng về những gì không hoạt động?

Sửa 1: Tôi sử dụng Magento 1.8.0, vì vậy thông qua một truy vấn url không hoạt động vì sự form_key

Trả lời

1

Cố gắng thay đổi

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

để

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

Giỏ hàng một singleton, bởi vì bạn chỉ có 1 giỏ hàng trên cửa hàng của bạn cho 1 người dùng và tất cả những ai muốn sử dụng nó có thể gọi nó là getSingleton, mà không tạo đối tượng mới. Nếu bạn sử dụng Mage :: getModel ('checkout/cart') nó sẽ tạo một đối tượng mới. Ye, nó sẽ cho phép bạn lưu báo giá cho DB, nhưng đây sẽ không phải là giỏ hàng hiện tại của khách hàng.

+0

Làm cách nào để có được giỏ hàng của khách hàng? – Camital

+2

Bạn có thay đổi tập lệnh của mình như tôi đã đề xuất không? Để có được giỏ hàng hiện tại của khách hàng sử dụng Mage :: getSingleton ('checkout/cart') -> getQuote(); hoặc Mage :: getSingleton ('checkout/Session') -> getQuote(); – freento

+0

Vâng tôi đã làm và giỏ hàng của tôi vẫn còn trống – Camital

1

Bạn cần phải làm mới itemcache của Itemcollection. Vì điều này cũng sẽ xóa mô hình báo giá khỏi nó, nó phải được thêm vào sau đó quá

$cart->getItems()->clear(); 
$cart->getItems()->setQuote($cart->getQuote()); 
Các vấn đề liên quan