方法未使用 Magento 观察器执行



我正在尝试在Magento中设置一个事件观察器。我正在观察的事件被触发,但似乎我的方法无法运行。我的模块已注册,一切正常。

这是定义观察者的配置.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类更改为其他类,则会记录一些错误,指出找不到该文件。

这是我的观察者.php文件

class Technoberg_Link_Model_Observer {
function __construct(){
}

public function start_link($e){
    Mage::log("Dummy code executed");
    return $this;
}
}

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

我修复了它。我检查了所有不是问题的空格。

我将事件放在全局下,并将观察器中的标签更改为与我正在使用的类相同的名称 。这解决了问题。所以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在他们的命名约定方面非常严格=)感谢您的帮助!

<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> 
标记

而不是前端标记

清除缓存并重新加载

尝试以下配置.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>

最新更新