Magento从观察者的购物车中移除物品

时间:2015-03-20 05:34:38

标签: magento cart magento-1.9

有没有办法可以从购物车中删除商品。实际上我有动态Grouped产品,我需要允许用户购买分组产品内的项目。现在当有人只选择分组产品下的项目时,它允许购买该产品并需要停止或从购物车中删除组产品。

我曾尝试使用checkout_cart_product_add_after Observer并使用下面的逻辑,但它不能正常工作

$cartHelper = Mage::helper('checkout/cart');
                $items = $cartHelper->getCart()->getItems();
                foreach ($items as $item) {
                    if ($item->getProduct()->getId() == $productId) {
                        $itemId = $item->getItemId();
                        $cartHelper->getCart()->removeItem($itemId)->save();
                        break;
                        }
                    }
                    return; 

请帮帮我们。

提前致谢。

2 个答案:

答案 0 :(得分:0)

独立示例:

$oCheckout = Mage::getSingleton( 'checkout/session' );
$oQuote    = $oCheckout->getQuote();
var_dump( $oQuote );

$oCart = $oQuote->getAllItems();
if( !empty( $oCart ) )
{
    foreach ( $oCart as $oItem ) 
    {
        // Specify conditionals
        if( $oItem->getProduct()->getSku() == 1 )
        {
            // Note to use Shopping cart id not product id.
            $oQuote->removeItem( $oItem->getId() )
            ->save();
        }
    }
}
var_dump( $oQuote );

答案 1 :(得分:0)

在观察者中尝试:

    $product = $observer->getEvent()->getProduct();
    $cart = Mage::getSingleton('checkout/cart');

    foreach ($cart->getQuote()->getItemsCollection() as $_item) {
        if ($_item->getProductId() == $product->getId()) {
                $_item->isDeleted(true);
            }
        }
    }