Событие загрузки продукта - независимо от контекста
-
16-10-2019 - |
Вопрос
Есть ли одно событие, которое я могу создать для наблюдателя, который запускается, когда продукт загружается либо с использованием getModel
или через коллекцию?
Точный вариант использования, который у меня есть, заключается в том, что у меня есть пользовательский атрибут продукта, но для того, чтобы вернуть правильный результат, необходимо сделать дальнейшая логика, которая основана на других факторах? Затем я планирую вычислить эту логику после загрузки и хранить ее в другом участнике. Если у кого -то есть альтернатива, я также был бы благодарен за этот совет.
Решение
Вам не нужен наблюдатель, чтобы сделать это. Вы можете использовать атрибут backend_model
Чтобы справиться с вашей логикой.
Если вы указываете Backend_Model с вашим атрибутом, и вы расширяете Mage_Eav_Model_Entity_Attribute_Backend_Abstract
класс в классе модели бэкэнд вы можете использовать afterLoad
, beforeSave
, afterSave
, beforeDelete
или же afterDelete
методы выполнения собственной логики.
С использованием backend_model
это правильный способ реализации такого рода логики и то, как нативные атрибуты Magento делают это там, где они имеют подобные требования.
Другие советы
К сожалению, похоже, что вам, возможно, придется использовать два здесь :(
Товар: 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