Magento:从购物车中删除商品

时间:2014-06-16 19:43:00

标签: magento

我需要从购物车中删除一件商品。

我使用保存购物车后触发的checkout_cart_add_product_complete事件。

然后我用:

 $quote = Mage::getSingleton('checkout/session')->getQuote();
 $allQuoteItems = $quote->getAllItems();
    foreach ($allQuoteItems as $_item) {
        $_product = $_item->getProduct();
      if ($_product->getIsPreparedToDelete()) {
          $quote->removeItem($_item->getId());
       } 
    }        
    $quote->save();

但该项目仍在那里......

我不知道我可以使用哪个事件 - 或者是否真的可以在购物车中删除某个项目(我还添加了相同的活动项目。)。

感谢。

3 个答案:

答案 0 :(得分:0)

看看@ Magento - remove one quantity from cart

$cartHelper = Mage::helper('checkout/cart');

$items = $cartHelper->getCart()->getItems();
foreach ($items as $item) {
   ...
        Mage::getSingleton('checkout/cart')->removeItem($item->getId()); 

答案 1 :(得分:0)

找到它。

removeItem()在此事件之外工作,全部保存。在作品中($ _item-> isDeleted(true)):

$ quote = Mage :: getSingleton('checkout / session') - > getQuote();

    $allQuoteItems = $quote->getAllItems();
    foreach ($allQuoteItems as $_item) {
        $_product = $_item->getProduct();
        f ($_product->getIsPreparedToDelete()) {
            $_item->isDeleted(true);
        } else {
            // ....
        }
    }
    $quote->save();

答案 2 :(得分:0)

我认为您可以使用以下某个事件进行观察,并可以使用从购物车中删除特定商品:

sales_quote_item_save_before:当项目被添加到购物车时,将在该项目的保存事件触发之前调用此事件。

sales_quote_save_after:每次保存整个购物车时,此事件将在此之后被解雇。

为了您的信息,销售报价对象用于处理购物车。

以下是magento事件列表的链接:

http://www.magentocommerce.com/wiki/5_-_modules_and_development/reference/events

如有任何疑问,请随时退回。

此致 米兰