Produktlastereignis - unabhängig vom Kontext
-
16-10-2019 - |
Frage
Gibt es ein einzelnes Ereignis, für das ich einen Beobachter erstellen kann getModel
Oder durch eine Sammlung?
Der genaue Anwendungsfall, den ich habe, ist, dass ich ein benutzerdefiniertes Produktattribut habe, aber um das richtige Ergebnis zurückzugeben, muss eine weitere Logik durchgeführt werden, die auf anderen Faktoren basiert? Ich plane dann, diese Logik nach dem Laden zu berechnen und in einem anderen Mitglied zu speichern. Wenn jemand eine Alternative hat, wäre ich auch für diesen Rat dankbar.
Lösung
Sie brauchen keinen Beobachter, um dies zu tun. Sie können das Attribut verwenden backend_model
um Ihre Logik zu bewältigen.
Wenn Sie ein Backend_Model mit Ihrem Attribut angeben und das erweitern Mage_Eav_Model_Entity_Attribute_Backend_Abstract
Klasse in Ihrer Backend -Modellklasse Sie können die verwenden afterLoad
, beforeSave
, afterSave
, beforeDelete
oder afterDelete
Methoden zur Ausführung Ihrer eigenen Logik.
Verwendung der backend_model
Ist die richtige Art, diese Art von Logik zu implementieren, und ist, wie native Magento -Attribute es dort tun, wo sie ähnliche Anforderungen haben.
Andere Tipps
Leider sieht es so aus, als müssten Sie vielleicht zwei hier verwenden :(
Produkt: catalog_product_load_after
Sammlung: catalog_product_collection_load_after
Mit dem Sammelveranstaltung können Sie ein "Sammlung" -Objekt arbeiten. Sie können dies durchschlagen und Ihre Änderungen auf Produktebene vornehmen. Wenn Sie Ihren Code in einen Helfer verschieben oder dasselbe verwenden Observer.php
Für beide Ereignisse sollten Sie in der Lage sein, die Menge des doppelten Codes zu begrenzen.
Versuchen
<catalog_product_load_after>
<observers>
...
Sehen https://stackoverflow.com/questions/15763829/magento-load-product-event-observer