製品負荷イベント - コンテキストに関係なく
-
16-10-2019 - |
質問
オブザーバーを作成できるイベントはありますか? getModel
またはコレクションを通して?
私が持っている正確なユースケースは、カスタム製品属性を持っていることですが、正しい結果を返すには、他の要因に基づいてさらにロジックを実行する必要がありますか?その後、ロード後にこのロジックを計算し、別のメンバーに保存することを計画しています。誰かが代替手段を持っているなら、私はこのアドバイスにも感謝します。
解決
これを行うにはオブザーバーは必要ありません。属性を使用できます backend_model
ロジックを処理します。
属性でbackend_modelを指定し、拡張する場合 Mage_Eav_Model_Entity_Attribute_Backend_Abstract
バックエンドモデルクラス内のクラスあなたは afterLoad
, beforeSave
, afterSave
, beforeDelete
また afterDelete
独自のロジックを実行する方法。
を使用して backend_model
この種のロジックを実装する正しい方法であり、ネイティブのMagento属性が同様の要件がある場合にそれを行う方法です。
他のヒント
悲しいことに、ここで2つを使用する必要があるように見えます:(
製品: catalog_product_load_after
コレクション: catalog_product_collection_load_after
コレクションイベントでは、作業する「コレクション」オブジェクトが提供されます。これをループして、製品レベルで変更を加えることができます。コードをヘルパーに移動するか、同じものを使用した場合 Observer.php
両方のイベントについて、重複コードの量を制限できるはずです。
試す
<catalog_product_load_after>
<observers>
...
見る https://stackoverflow.com/questions/15763829/magento-load-product-event-observer