【发布时间】:2015-09-25 11:48:33
【问题描述】:
我正在处理现有的 magento 页面。登录用户可以更改他的个人资料信息(名字、姓氏、电子邮件等),他们可以更改他们的帐单和送货地址。
我需要做的是在客户更改其基本信息或其中一个地址时发送通知电子邮件。我为两个事件创建了一个观察者:
<frontend>
<events>
<customer_save_after>
<observers>
<ext_customer_save_after>
<type>singleton</type>
<class>ext/observer</class>
<method>customerSaveAfter</method>
</ext_customer_save_after>
</observers>
</customer_save_after>
<customer_address_save_after>
<observers>
<ext_customer_save_after>
<type>singleton</type>
<class>ext/observer</class>
<method>customerAddressSaveAfter</method>
</ext_customer_save_after>
</observers>
</customer_address_save_after>
</events>
</frontend>
在 customerSaveAfter 中我发送一封电子邮件,在 customerAddressSaveAfter 中我检查当前 ID 是否与 defaultbillingaddress 或 defaultshipping address 相同,并相应地发送通知。这工作正常,直到用户选中“设置为默认送货地址”复选框。在这种情况下,我突然收到 5 封邮件:
- 帐单邮寄地址已更改
- 收货地址已更改
- 收货地址已更改
- 帐单地址已更改
- 客户信息已更改
所以,突然事件被触发了多次,customer_address_save_after 以某种方式触发了 customer_save_after 事件。有没有办法防止这种情况或检查哪个事件触发了另一个事件或类似的事情?或者有其他方法可以解决这个问题吗?
非常感谢您的任何提示,非常感谢。
【问题讨论】:
-
您收到 5 封邮件,可能是因为 - 每当客户更改任何数据(包括地址、基本个人资料等)时,都会触发 customer_save_after 事件。而您的第二个 customer_address_save_after 事件专门在地址更改时触发。
-
但如果客户编辑地址,我只会收到一封电子邮件。 customer_save_event 仅在选中复选框时触发
-
好的,所以这可能与您的问题有关,可以帮助您stackoverflow.com/questions/5838346/…
-
非常感谢。我最终采用了不同的方法,但您的链接仍然对我有所帮助。