我正在开发一个扩展程序,它将在保存时从Magento(Enterprise)接收CatalogEvent信息,并对信息进行自定义处理。
这是我用来收听事件的代码:
<?xml version="1.0"?>
<config>
<global>
<models>
<mage4ucustomredirect>
<class>Mage4u_Customredirect</class>
</mage4ucustomredirect>
</models>
<events>
<enterprise_catalogevent_event>
<observers>
<abc>
<type>singleton</type>
<class>Mage4u_Customredirect_Model_Observer</class>
<method>on_enterprise_catalogevent_event</method>
</abc>
</observers>
</enterprise_catalogevent_event>
</events>
</global>
</config>
这是观察者:
class Mage4u_Customredirect_Model_Observer
{
public function on_enterprise_catalogevent_event(Varien_Event_Observer $observer)
{
Mage::log( "on_enterprise_catalogevent_event" );
}
}
?>
当我保存CatalogEvent时,我没有收到电话。你能发现我的代码有什么问题吗?
答案 0 :(得分:0)
请试试这个:
<events>
<enterprise_catalogevent_event>
<observers>
<mage4u_customredirect_model_observer>
<type>singleton</type>
<class>Mage4u_Customredirect_Model_Observer</class>
<method>on_enterprise_catalogevent_event</method>
</mage4u_customredirect_model_observer>
</observers>
</enterprise_catalogevent_event>
</events>
答案 1 :(得分:0)
您的观察者未被调用,因为enterprise_catalog_event
是模型,而不是事件。
请参阅app/code/core/Enterprise/CatalogEvent/etc/config.xml
:
<config>
:
<global>
<models>
<enterprise_catalogevent>
<class>Enterprise_CatalogEvent_Model</class>
<resourceModel>enterprise_catalogevent_resource</resourceModel>
</enterprise_catalogevent>
<enterprise_catalogevent_resource>
:
<entities>
<event>
<table>enterprise_catalogevent_event</table>
</event>
:
</entities>
</enterprise_catalogevent_resource>
</models>
:
</global>
:
</config>
Afaik enterprise_catalogevent/event
不会调度自己的保存事件,但您可以观察通用的model_save_before
或model_save_after
事件,以便在创建/保存此模型时接收回调。
您只需要首先识别传递给这些通用事件的对象:
$oObject = $observer->getEvent()->getObject();
if ($oObject instanceof Enterprise_CatalogEvent_Model_Event) {
if ($oObject->isObjectNew()) {
// it is/was a create
else {
// it is/was a save
}
}