En Magento 2, ¿cuáles son las ventajas y desventajas de usar un complemento frente a un observador para lograr algo?
Entiendo que los observadores están suscritos a eventos, mientras que los complementos pueden saltar antes y / o después de que se llame a un método público en una clase de Magento, pero ¿seguro que ahora están muy cerca de cruzarse?
magento2
event-observer
plugin
Robbie Averill
fuente
fuente
Respuestas:
Los complementos son omnipresentes ya que es posible modificar / reemplazar el comportamiento de cualquier método público en el sistema. Las personalizaciones deben realizarse utilizando complementos para métodos / clases públicos marcados con
@api
anotaciones (API pública estable) siempre que sea posible. Tal enfoque garantiza que la personalización seguirá siendo funcional después de los nuevos lanzamientos de Magento. Además debefore
/after
plugins mencionados en la pregunta, es posible creararound
complementos para sustituir el comportamiento original.Por otro lado, los observadores son un mecanismo de extensión heredado heredado de Magento 1, es bastante limitado y debe evitarse si es posible. Sin embargo, a diferencia de los complementos, pueden proporcionar puntos de extensión dentro de métodos protegidos / privados.
fuente
De acuerdo con la guía técnica de Magento ( https://devdocs.magento.com/guides/v2.1/coding-standards/technical-guidelines.html#14-events ): todos los valores (incluidos los objetos) pasados a un evento NO DEBEN ser modificado en el observador de eventos. En cambio, los complementos DEBERÍAN utilizarse para modificar la entrada o salida de una función.
Para mí, la principal diferencia entre complementos y observadores es:
fuente
checkout_submit_all_after
evento. Su observador se activará después de que el pedido se haya realizado correctamente.