【发布时间】:2013-12-03 10:06:16
【问题描述】:
Magento 中的<catalog_category_save_after> 和<catalog_category_save_commit_after> 有什么区别?
我要创建一个新模块,我必须决定在这两个事件中的哪一个事件中挂起我的观察者。
【问题讨论】:
标签: magento magento-1.7
Magento 中的<catalog_category_save_after> 和<catalog_category_save_commit_after> 有什么区别?
我要创建一个新模块,我必须决定在这两个事件中的哪一个事件中挂起我的观察者。
【问题讨论】:
标签: magento magento-1.7
类别(和所有其他对象)保存在事务中。事件catalog_category_save_after 在事务内部触发。所以这个事件的观察者中可能出现的任何错误都会触发回滚。
事务提交后触发事件catalog_category_save_commit_after。因此,该事件的观察者内部的任何错误都不会触发类别保存的回滚。
【讨论】:
$observer->getEvent()->getCategory() 或 $observer->getEvent()->getDataObject()。两者都返回相同的东西。
事件在提交后触发,这意味着该观察者可用于发出 SQl 成功的信号。
while 不保证不会有任何回滚。这里在编写观察者时不能想当然地认为任何触发的 sql 都不会回滚。
简而言之,如果你想添加一个观察者,那么在成功(comit)之后应该收集一些特定的功能,然后使用 catalog_category_save_commit_after。
【讨论】: