我无法在magento中找到catalog_product_save_after和catalog_product_save_before

时间:2013-02-25 06:08:31

标签: magento events magento-1.7 observers

嗨我想写一个钩子。 我做了一个名为BEST SELLER的类别和一个名为BESTSELLER的属性(是/否)(默认为NO)(一般情况下)。 当我将BEST SELLER类别分配给任何产品时,我想写一个钩子,它必须将属性BESTSELLER更改为YES,当我们从BEST SELLER类别中删除产品时,它必须将BESTSELLER属性值更改为NO。 但是我发现在magento v-1.7.0.2中没有像catalog_product_save_before和catalog_product_save_after这样的事件。 任何帮助请快速回复。

1 个答案:

答案 0 :(得分:12)

简答

catalog_product_save_beforecatalog_product_save_after可用,您将无法直接找到它。

长答案

如果您尝试搜索Core文件而不是找不到它。因为Magento正在为所有模型save_beforesave_after使用动态事件调度。查看文件Mage_Core_Model_Abstract,您会找到以下行:

Mage::dispatchEvent($this->_eventPrefix.'_save_before', $this->_getEventData());
Mage::dispatchEvent($this->_eventPrefix.'_save_after', $this->_getEventData());

现在查看Mage_Catalog_Model_Product文件。您将找到值为catalog_product

的受保护方法eventPrefix
protected $_eventPrefix      = 'catalog_product';

因此,目录产品的$this->_eventPrefix在模型的调度事件中将为catalog_product_save_beforecatalog_product_save_after

这适用于扩展Mage_Core_Model_Abstract

的所有模型的保存操作