Magento Enterprise CatalogEvent - PullRequest
       16

Magento Enterprise CatalogEvent

1 голос
/ 07 февраля 2012

Я работаю над расширением, которое получит информацию CatalogEvent от Magento (Enterprise) при сохранении и выполнит пользовательскую обработку информации.

Вот код, который я использую для прослушивания события:

<?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 голосов
/ 08 февраля 2012

Ваш наблюдатель не вызван, потому что 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
    }        
}
0 голосов
/ 07 февраля 2012

Пожалуйста, попробуйте это:

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