1

我尝试使用以下代码删除/清除购物车项目,它已删除购物车中的所有项目。但没有添加新产品/项目。

使用的代码

1.Mage::getSingleton('checkout/session')->clear();
2.Mage::getSingleton('checkout/cart')->truncate();
3.$quote = Mage::getSingleton('checkout/session')->getQuote(); 
$quote->delete();
4.Mage::getSingleton('checkout/cart')->truncate()->save();
5.Mage::getSingleton('checkout/session')->setCartWasUpdated(true);
6.foreach( Mage::getSingleton('checkout/session')->getQuote()->getItemsCollection() as $item ){
    Mage::getSingleton('checkout/cart')->removeItem( $item->getId() )->save();
}
7.$cartHelper = Mage::helper('checkout/cart');
        $items = $cartHelper->getCart()->getItems();       
        foreach ($items as $item)
        {
                $itemId = $item->getItemId();
                $cartHelper->getCart()->removeItem($itemId)->save();
        }

8.$quote = Mage::getSingleton('checkout/session')->getQuote();
$item = $quote->getItemByProduct($product);
$quote->removeItem($item->getId());

9.$quote->removeAllItems();

请任何人建议我以上我的要求。在此先感谢。

谢谢阿鲁姆加姆

4

3 回答 3

5

这是删除以及将产品添加到购物车的解决方案

$params['qty'] = 1;
$product = $this->_initProduct($_product); // here initialize the product

$cart = Mage::getModel('checkout/cart');                
$cart->truncate(); // remove all active items in cart page
$cart->init();
$cart->addProduct($product,$params);                        
$cart->save();
于 2014-02-24T17:57:00.983 回答
1

如果您有大量客户报价,则使用循环删除它们可能会耗费时间和资源。您可以使用以下 SQL 查询清除/删除所有客户购物车项目(所有有效的销售报价):

从 sales_flat_quote 中删除 is_active = 1;

is_active = 0 表示这些报价已转化为订单,即客户已为这些报价下单。

is_active = 1 表示未订购的报价,即客户购物车中存在的报价

运行此查询将通过外键约束自动从 sales_flat_quote_item 表中删除相关行(报价项)

于 2014-12-18T07:28:03.183 回答
0

如果您只想更新数量,请检查它是否解决了我的问题。

文件路径:\app\code\core\Mage\Sales\Model\Quote 文件名:Item.php

行号:285

公共函数 addQty($qty) { $oldQty = $this->getQty(); $qty = $this->_prepareQty($qty);

    /**
     * We can't modify quontity of existing items which have parent
     * This qty declared just once duering add process and is not editable
     */
    if (!$this->getParentItem() || !$this->getId()) {
        $this->setQtyToAdd($qty);
        $this->setQty($oldQty + $qty);

    }
    return $this;
}

改成

公共函数 addQty($qty) { $oldQty = $this->getQty(); $qty = $this->_prepareQty($qty);

    /**
     * We can't modify quontity of existing items which have parent
     * This qty declared just once duering add process and is not editable
     */
    if (!$this->getParentItem() || !$this->getId()) {
        $this->setQtyToAdd($qty);
        //$this->setQty($oldQty + $qty);
        $this->setQty($qty);
    }
    return $this;
}
于 2015-08-20T15:25:57.697 回答