观察员结帐购物车更新无效

时间:2013-09-03 12:39:53

标签: magento

这是我在这个页面上的第一篇文章,所以请不要打我太多:) 我想要结帐的事件太多了。其中一个工作正常,但其他没有。我不知道我的代码有什么问题。请帮忙。

事件checkout_cart_product_add_after - 效果很好,但checkout_cart_update_items_after - 不起作用。

config.xml中

<events>
        <checkout_cart_product_add_after>
            <observers>
                <tim_checkout_model_observer>
                    <type>singleton</type>
                    <class>Tim_Checkout_Model_Observer</class>
                    <method>applyTotalPrice</method>
                </tim_checkout_model_observer>
            </observers>
        </checkout_cart_product_add_after>
        <checkout_cart_update_items_after>
            <observers>
                <tim_checkout_model_observer>
                    <type>singleton</type>
                    <class>Tim_Checkout_Model_Observer</class>
                    <method>applyTotalPrices</method>
                </tim_checkout_model_observer>
            </observers>
        </checkout_cart_update_items_after>
    </events>

Tim_Checkout_Model_Observer

public function applyTotalPrice(Varien_Event_Observer $observer)
{
    $item = $observer->getQuoteItem();
    if ($item->getParentItem()) {
        $item = $item->getParentItem();
    }
    if(Mage::helper('checkout/calculator')->isBarrelProduct($item->getProduct())){
        $specialPrice = Mage::helper('checkout/calculator')->getProductWorth($item->getProduct());
        if ($specialPrice > 0) {
            $item->setCustomPrice($specialPrice);
            $item->setOriginalCustomPrice($specialPrice);
            $item->getProduct()->setIsSuperMode(true);
        }
    }

}

public function applyTotalPrices(Varien_Event_Observer $observer)
{

    foreach ($observer->getCart()->getQuote()->getAllVisibleItems() as $item) {
        if ($item->getParentItem()) {
            $item = $item->getParentItem();
        }
        if(Mage::helper('checkout/calculator')->isBarrelProduct($item->getProduct())){
            $specialPrice = Mage::helper('checkout/calculator')->getProductWorth($item->getProduct());
            if ($specialPrice > 0) {
                $item->setCustomPrice($specialPrice);
                $item->setOriginalCustomPrice($specialPrice);
                $item->getProduct()->setIsSuperMode(true);
            }
        }
    }
}

我认为没有运行applyTotalPrices方法,但我不知道如何调试观察者?

1 个答案:

答案 0 :(得分:0)

首先,我会在观察者的开头放置一个Mage :: log()来检查当事件发生时函数是否运行