こんにちは、フックを書きたいと思います。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 のようなイベントが存在しないことがわかりました。どんな助けでも速く答えてください。
質問する
2649 次
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_before
、catalog_product_save_after
モデルのディスパッチ イベントになります。
これは、拡張中のすべてのモデルの保存アクションに適用されます。Mage_Core_Model_Abstract
于 2013-02-25T09:49:09.973 に答える