我正在尝试在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;
}
}
我不知道为什么我的方法没有被执行所以任何帮助都会很棒!
答案 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>