Magento企业目录事件

时间:2012-02-07 09:09:50

标签: magento enterprise

我正在开发一个扩展程序,它将在保存时从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时,我没有收到电话。你能发现我的代码有什么问题吗?

2 个答案:

答案 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_beforemodel_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
    }        
}