1

こんにちは、フックを書きたいと思います。BEST SELLERというカテゴリと、BESTSELLER(YES / NO)(デフォルトはNO)(一般の下)という1つの属性を作成しました。BEST SELLER カテゴリを任意の製品に割り当てるときにフックを書きたいとします。BESTSELLER 属性を YES に変更する必要があり、BEST SELLER カテゴリから製品を削除するときに BESTSELLER 属性値を NO に変更する必要があります。しかし、magento v-1.7.0.2 には catalog_product_save_before や catalog_product_save_after のようなイベントが存在しないことがわかりました。どんな助けでも速く答えてください。

4

1 に答える 1

12

簡潔な答え

catalog_product_save_before利用可能でcatalog_product_save_afterあり、直接見つけることはできません。

長い答え

Core ファイルを検索しようとしている場合は、見つかりません。Magento はすべてのモデルsave_beforeとに対して動的イベント ディスパッチを使用しているためsave_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ファイルを見てください。値を持つ保護されたメソッド eventPrefix が見つかりますcatalog_product

protected $_eventPrefix      = 'catalog_product';

したがって、$this->_eventPrefixカタログ製品の場合はcatalog_product_save_beforecatalog_product_save_afterモデルのディスパッチ イベントになります。

これは、拡張中のすべてのモデルの保存アクションに適用されます。Mage_Core_Model_Abstract

于 2013-02-25T09:49:09.973 に答える