Событие загрузки продукта - независимо от контекста

magento.stackexchange https://magento.stackexchange.com/questions/3882

  •  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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с magento.stackexchange
scroll top