2016-12-27 1 views
0

Как обновить корзину, используя идентификатор товара? Я искал много, но не мог успех, вот мои коды -Magento - обновить корзину подерителю ID

require_once '../app/Mage.php'; 
Mage::app('default'); 

$qty = $_REQUEST['quantity']; 
$item_id = (int) $_REQUEST['item_id']; 
$cart = Mage::getSingleton('checkout/cart'); 
$quoteItem = $cart->getQuote()->getItemById($item_id); 

/*$quoteItem = Mage::getModel('sales/quote_item')->getCollection() 
    ->addFieldToFilter('item_id', array('in' => array($item_id)));*/ 
print_r($quoteItem); 
if (!$quoteItem) { 
    Mage::throwException('Quote item is not found.'); 
} 

if ($qty == 0) { 
    $cart->removeItem($id); 
} else { 
    $quoteItem->setQty($qty)->save(); 
} 
$cart->save(); 

Я реализую его в API, однако тот же код работает отлично в website.please помощи !!!

ответ

3

Я использовал приведенный ниже код для обновления пунктов корзины, и я использую наблюдателя для этого. вы можете попробовать это.

$quote = $observer->getEvent()->getQuote(); 
    var_dump($quote->getId()); 

    $quote = Mage::getSingleton('checkout/session')->getQuote(); 
    //var_dump($quote->getId()); 
    $cartItems = $quote->getAllItems(); 
    //$storeId = Mage::app()->getStore()->getId(); 
    foreach ($cartItems as $item) { 
     //echo $item->getSku(); 
     $item->set__($value); // desired quote field from database 
     $item->save(); 
    } 
    $quote->save(); 
+0

Я использую коды в веб-сервисе, вы уверены, что «сеанс» работает здесь? –

+0

Неустранимая ошибка: вызовите функцию-член getEvent() на не-объект в /home/yxyshareoflovest/public_html/web-services/test.php в строке 13 –

+0

@SachinVairagi удалите ниже строки. $ quote = $ observer-> getEvent() -> getQuote(); var_dump ($ quote-> getId()); работает только в наблюдателе. –