我正在尝试挂钩catalog_product_save_after事件。这是config.xml
<events>
<catalog_product_save_after>
<observers>
<observer_name_here>
<class>My_Class_Model_Observer</class>
<method>methodToCall</method>
<type>singleton</type>
</observer_name_here>
</observers>
</catalog_product_save_after>
</events>
下面是在methodToCall()中运行的代码:
$product = Mage::getModel('catalog/product')->load(1);
$product->setName('TESTING 123');
$product->save();
问题是:触发
事件catalog_product_save_after时。用methodToCall()编写的代码再次触发catalog_product_save_after。并且根据 Magento EDA 系统methodToCall()再次调用它再次触发catalog_product_save_after。因此系统陷入了一系列触发和侦听同一事件的状态。
我的问题:
- 如何避免这种情况?
- 是否有任何方法可以出于临时目的禁用 Magento 事件调度功能(如果可能,无需重写Mage_Core_Model_App的dispatchEvent方法 )。
- 如果观察者触发实例化观察者的相同事件,如何防止无限循环。就像上面的情况一样。