問題描述
我在 magento 中使用 customer_save_after
事件,除了 1 件煩人的事情之外,一切正常 - 它總是被觸發(fā)兩次.
I am using the customer_save_after
event in magento, and all is working fine apart from 1 annoying thing - it is always fired twice.
沒有其他模塊重寫這個(gè),我找不到其他原因?qū)е逻@種情況發(fā)生.當(dāng)我查看此時(shí)被觸發(fā)的所有事件時(shí),該事件肯定會被觸發(fā)兩次.
There are no other modules rewriting this and I can find no other reason for this happening. When I look through all of the events getting fired at this time and this event is definately getting fired twice.
有人解釋一下嗎?
我正在編寫一個(gè)與此掛鉤的 Web 服務(wù),但結(jié)果證明復(fù)制內(nèi)容非常低效.
I am writing a web service that hooks into this and its turning out to be quite inefficient to duplicate things.
推薦答案
我也注意到了這種雙重保存行為.防止觀察者出現(xiàn)問題的方法是在請求中設(shè)置一個(gè)可以檢查的標(biāo)志,例如
I've noticed this double-save behaviour too. The way to prevent issue with your observer is to set a flag in the request that can be checked e.g.
if(Mage::registry('customer_save_observer_executed')){
return $this; //this method has already been executed once in this request (see comment below)
}
...execute arbitrary code here....
/* Customer Addresses seem to call the before_save event twice,
* so we need to set a variable so we only process it once, otherwise we get duplicates
*/
Mage::register('customer_save_observer_executed',true);
這篇關(guān)于Magento - customer_save_after 總是觸發(fā)兩次的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網(wǎng)!