【问题标题】:Magento Enterprise CatalogEventMagento 企业目录事件
【发布时间】:2012-02-07 09:09:49
【问题描述】:

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

【问题讨论】:

    标签: magento enterprise


    【解决方案1】:

    没有调用您的观察者,因为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
        }        
    }
    

    【讨论】:

    • 谢谢。现在我明白为什么它不工作了......但你知道我应该利用哪个事件,以便在创建/保存 CatalogEvent 时接收回调?
    • 哇 Jürgen ...它有效!非常感谢你!你太棒了:-)
    【解决方案2】:

    请试试这个:

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

    【讨论】:

    • 感谢您的回复。我试过了……没有任何改变。您能确认我使用的活动名称是正确的吗?我的意思是“enterprise_catalogevent_event”
    • 试试这个事件触发器:catalogevent_event_save_after
    猜你喜欢
    • 2011-08-15
    • 2017-05-26
    • 1970-01-01
    • 1970-01-01
    • 2017-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-27
    相关资源
    最近更新 更多