看看Mage_Core_Model_Abstract :: afterCommitCallback - 它有一个通用事件和一个由保存的特定模型的前缀调度的事件.
/**
* Callback function which called after transaction commit in resource model
*
* @return Mage_Core_Model_Abstract
*/
public function afterCommitCallback()
{
Mage::dispatchEvent('model_save_commit_after', array('object'=>$this));
Mage::dispatchEvent($this->_eventPrefix.'_save_commit_after', $this->_getEventData());
return $this;
}
Run Code Online (Sandbox Code Playgroud)
无论你想要这个还是
/**
* Processing object after save data
*
* @return Mage_Core_Model_Abstract
*/
protected function _afterSave()
{
$this->cleanModelCache();
Mage::dispatchEvent('model_save_after', array('object'=>$this));
Mage::dispatchEvent($this->_eventPrefix.'_save_after', $this->_getEventData());
return $this;
}
Run Code Online (Sandbox Code Playgroud)
取决于在运行事件处理程序时是否关心数据是否实际写入数据库.
当Magento看到Mage::dispatchEvent对它的调用时,将调用为该特定事件名称注册的任何公共模型类.因此,查找事件的真实位置在您感兴趣的模块/模型的config.xml中.xml不太可能以编程方式生成,因此您不必为猜测_eventPrefix值而烦恼.您知道所需的事件后缀,因此只需查看名称以该后缀结尾的事件的配置.
如果您有已安装的商店,则可以使用n98-magerun搜索config.xml.(它有一个可用于搜索的config:get命令,但我更喜欢config:dump一个文件,然后使用xml解析器和xpath来搜索结果.)
以下是我认为最佳答案将基于您提供的所有信息.
为了使事件对该模型唯一,这个 - > _ eventPrefix必须对该模型是唯一的
查找您要查找的特定事件
如果您使用IDE,这应该更容易,但您也可以使用像grep这样的实用程序.
_load_before
_load_after
_save_before
_save_after
_save_commit_after
_delete_before
_delete_after
_delete_commit_after
_明确
要记录所有事件,请转到app/Mage.php第446行并添加:
Mage::setIsDeveloperMode(true);
Mage::log($name);
Run Code Online (Sandbox Code Playgroud)