使用Magento观察器未执行的方法

时间:2012-04-17 09:04:15

标签: events magento observer-pattern

我正在尝试在Magento中设置一个事件观察员。我正在观察的事件被解雇了,但似乎我的方法不会运行。我的模块已经注册,一切都很好。

这是定义观察者的config.xml

<?xml version="1.0" encoding="UTF-8"?>
<config>
    <global>
        <models>
            <technoberglink>
                <class>
                    Technoberg_Link_Model
                </class>
            </technoberglink>
        </models>
    </global>
    <frontend>
        <events>
            <cms_page_render><!-- sales order place after -->
                <observers>
                    <Technoberg_Link_Observer>
                        <type>
                            singleton
                        </type>
                        <class>
                            Technoberg_Link_Model_Observer
                        </class>
                        <method>
                            start_link
                        </method>
                    </Technoberg_Link_Observer>
                </observers>
            </cms_page_render>
        </events>
    </frontend>
</config>

现在我知道该事件被触发了,因为如果我将Technoberg_Link_Model_Observer的类更改为其他内容,则会记录一些错误,指出无法找到该文件。

这是我的Observer.php文件

class Technoberg_Link_Model_Observer {

function __construct(){

}


public function start_link($e){

    Mage::log("Dummy code executed");
    return $this;

}
}

我不知道为什么我的方法没有被执行所以任何帮助都会很棒!

3 个答案:

答案 0 :(得分:4)

我修好了。 我检查了所有不是问题的空白。

我将事件置于全局下,并将观察者内部的标记更改为与我正在使用的类 相同的名称。这解决了问题。所以XML将是

    <global>
      <events>
        <cms_page_render>
            <observers>
                <Technoberg_Link_Model_Observer> <!-- TAG INSIDE OBSERVER -->
                    <type>singleton</type>
                    <class>Technoberg_Link_Model_Observer</class>
                    <method>start_link</method>
                </Technoberg_Link_Observer>
            </observers>
        </cms_page_render>
      </events>
    </global>

我猜Magento在命名惯例方面非常严格=)感谢您的帮助!

答案 1 :(得分:0)

<events>
            <cms_page_render><!-- sales order place after -->
                <observers>
                    <Technoberg_Link_Observer>
                        <type>
                            singleton
                        </type>
                        <class>
                            Technoberg_Link_Model_Observer
                        </class>
                        <method>
                            start_link
                        </method>
                    </Technoberg_Link_Observer>
                </observers>
            </cms_page_render>
        </events>

中写下xml的这一部分
<global> </global> 

标记不是前端标记

清除缓存并重新加载

答案 2 :(得分:0)

尝试以下config.xml ...我认为这是一个空白问题......

<?xml version="1.0" encoding="UTF-8"?>
<config>
    <global>
        <models>
            <technoberglink>
                <class>Technoberg_Link_Model</class>
            </technoberglink>
        </models>
    </global>
    <frontend>
        <events>
            <cms_page_render>
                <observers>
                    <technoberglink>
                        <type>singleton</type>
                        <class>Technoberg_Link_Model_Observer</class>
                        <method>start_link</method>
                    </technoberglink>
                </observers>
            </cms_page_render>
        </events>
    </frontend>
</config>