Magento模块观察者没有开火

时间:2013-06-05 16:25:00

标签: php xml magento

你能看出为什么观察者中的Mage :: log没有被发射吗?非常沮丧。在我将商品添加到购物车后,我希望他们能够登录,但事实并非如此。你能看到问题吗? 我已启用日志记录。该模块显示在config> advanced下的列表中。我已经禁用了缓存但是我已经清理好了。

config.xml中:

<?xml version="1.0" encoding="UTF-8"?>
<config>    
    <modules>
        <Caitlinhavener_Dynamicprice>
            <version>0.1.0</version>
        </Caitlinhavener_Dynamicprice>
    </modules>
    <global>
        <models>
            <chdispatcher>
                <class>Caitlinhavener_Dynamicprice_Model</class>
            </chdispatcher>
        </models>

        <frontend>
            <events>
                <checkout_cart_product_add_after>
                    <observers>
                        <modify_to_custom_price>
                            <class>Caitlinhavener_Dynamicprice_Model_Observer</class>
                            <method>modifyPrice</method>
                        </modify_to_custom_price>
                    </observers>
                </checkout_cart_product_add_after>
            </events>
        </frontend>
    </global>
</config>

Observer.php:

<?php
Mage::log('Im here')
or exit("unable to log");
class Caitlinhavener_Dynamicprice_Model_Observer
{
    public function modifyPrice(Varien_Event_Observer $obs)
    {
        // Get the quote item
        $item = $obs->getQuoteItem();
        Mage::log('Get Quote Item '. var_dump($_item->debug());

        // Ensure we have the parent item, if it has one
        $item = ( $item->getParentItem() ? $item->getParentItem() : $item );
        Mage::log('Get parent item ' . var_dump($_item->debug());

        // Load the custom price
        //$price = "your custom price logic";
        $price = Mage::registry('dynamic_tier_price');
        Mage::log('Price is ' . $price);

        // Set the custom price
        $item->setCustomPrice($price);
        $item->setOriginalCustomPrice($price);
        // Enable super mode on the product.
        $item->getProduct()->setIsSuperMode(true);
        Mage::log('Item after super mode ' . var_dump($_item->debug());
    }



}
?>

1 个答案:

答案 0 :(得分:1)

您的config.xml不正确(删除<frontend>代码)

<config>
   ..
   <global>
      <models>
         <chdispatcher>
             <class>Caitlinhavener_Dynamicprice_Model</class>
         </chdispatcher>
     </models>
     <events>
       ...
    </events>

在magento中,您有3个不同的事件范围(请参阅Magento: Event Observer Scope

在你的config.xml中

<config>
    <frontend>
        <events>
            ...
        </events>
    <frontend>
    <adminhtml>
        <events>
            ...
        </events>
    <adminhtml>
    <global>
        <events>
            ...
        </events>
    <global>
</config>