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

При печати $cart->getItemsQty() мое количество пункта, incremanting но моя корзина пуста. Я думаю, что это Mage::getSingleton('checkout/session')->setCartWasUpdated(true);, который работает неправильно.

У кого-нибудь есть представление о том, что не работает?

Edit 1: Я использую Magento 1.8.0, так что с помощью запроса URL-адрес не работает из-за form_key

ответ

1

Попробуйте изменить

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

в

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

Корзина Singleton, потому что у вас есть только 1 корзина в вашем магазине для 1 пользователя, и все, кто захочет ее использовать, могут назвать ее getSingleton, не создавая новый объект. Если вы используете Mage :: getModel ('checkout/cart'), он создаст новый объект. Е., это позволит вам сохранить цитату в БД, но это не будет текущая активная корзина клиентов.

+0

Как я могу получить корзину покупателя? – Camital

+2

Вы изменили свой сценарий, как я предложил? Чтобы получить текущую корзину клиентов, используйте Mage :: getSingleton ('checkout/cart') -> getQuote(); или Mage :: getSingleton ('checkout/session') -> getQuote(); – freento

+0

Да, я сделал, и моя тележка все еще пуста – Camital

1

Необходимо обновить Itemcache Itemcollection. Поскольку это также удалит из него цитату-модель, ее необходимо добавить после этого

$cart->getItems()->clear(); 
$cart->getItems()->setQuote($cart->getQuote()); 
Смежные вопросы