簡體   English   中英

在magento中添加新產品時從購物車中刪除商品

[英]Delete items from cart while adding new products in magento

我想在添加新產品時從購物車中刪除商品。 我正在觀察: checkout_cart_add_product_complete事件。 我的代碼如下:

<checkout_cart_add_product_complete>
    <observers>
        <secodaryproduct>
            <type>singleton</type>
            <class>secodaryproduct/observer</class>
            <method>checkoutCartAddProductAddComplete</method>
        </secodaryproduct>
    </observers>
</checkout_cart_add_product_complete>

並刪除產品:

 $quote = Mage::getSingleton('checkout/cart'); 
 $quote->removeItem($product['item_id']);
 $quote->save();

當我在沒有觀察者的情況下調用此代碼時,此工作正常並刪除所需的項目。 但是,如果我使用觀察者使用此項,則不會從購物車中刪除項目。 我還將輸出放在日志文件中,項目ID正確打印但我的項目沒有從購物車中刪除。 請幫忙。

當在/checkout/cart/add調用Mage::dispatchEvent('checkout_cart_add_product_complete', ...)時,相關的Mage_Catalog_Model_Product實例將傳遞給事件觀察者。 所以你應該可以做這樣的事情,這將刪除與該產品ID匹配的所有購物車項目:

public function checkoutCartAddProductAddComplete(Varien_Event_Observer $observer)
{
    /* @var Mage_Catalog_Model_Product $product */
    $product = $observer->getProduct();
    /* @var Mage_Checkout_Model_Cart $cart */
    $cart = Mage::getSingleton('checkout/cart');
    $cartItems = $cart->getItems();
    /* @var Mage_Sales_Model_Quote_Item $item */
    foreach ($cartItems as $item) {
        if ($item->getProductId() == $product->getId()) {
            $cart->removeItem($item->getId());
        }
    }
    $cart->save();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM