Magento удалить товар из корзины от наблюдателя

Есть ли способ удалить товары из корзины. На самом деле у меня есть динамические сгруппированные продукты, и мне нужно разрешить пользователю покупать товар внутри сгруппированного продукта. Теперь, когда кто-то выбирает только элемент под сгруппированным продуктом, он позволяет купить его и должен остановить или удалить групповой продукт из корзины.

Я пробовал с 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; 

Пожалуйста, помогите мне, ребята.

Заранее спасибо.


person Vick    schedule 20.03.2015    source источник


Ответы (2)


Отдельный пример:

$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 );
person Vladimir Ramik    schedule 20.03.2015

Попробуйте это в своем наблюдателе:

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

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