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をもう一度起動するメソッドToCall()が再度呼び出されます。そのため、システムは一連の発火と同じイベントのリッスンでスタックしました。
私の質問:
- この状況を回避するには?
- 一時的な目的で Magento イベント ディスパッチ機能を無効にする方法はありますか (可能であれば、 Mage_Core_Model_AppのdispatchEventメソッドを書き換えずに )。
- オブザーバーが、オブザーバーをインスタンス化したのと同じイベントを発生させた場合に、無限ループを防ぐ方法。上記の場合のように。