Funcionamiento de Events y Debug de Observers en Magento2

Trabajar con Events y Observers son uno de los métodos que tenemos para poder extender el Core de Magento2 sin necesidad de modificarlo.

Antes de ver un ejemplo práctico veamos que son y cual es su función.

Eventos

Los Eventos son enviados por los módulos cuando estos realizan una determinada acción y podrán pasarle datos al observador que esté controlándolo.

Magento también nos permite crear nuestros propios eventos.

Observer

Los Observers son Clases que nos permiten modificar el comportamiento general de la aplicación y la lógica del negocio de Magento.

Estas clases nos serán de utilidad para poder implementar acciones cuando se produzca un evento determinado.

Eventos personalizados

Para crear un Evento personalizado necesitamos crear un fichero llamado events.xml en el directorio etc/ de nuestro módulo y al que le indicaremos que observador reaccionará al producirse el evento.

Si queremos ser ordenados lo suyo es crear el Observer dependiendo de la función que realice en los directorios etc/adminhtml/ o etc/frontend/

Creando un Observer

Para crear un Observer creamos un directorio llamado Observer/ en el directorio raíz de nuestro módulo.

Todos los Obsersers usan la clase Magento\Framework\Event\Observer e implementan el interfaz Magento\Framework\Event\ObserverInterface y por supuesto necesitamos incluir un método execute()

Una de las ventajas de los Observers es que podremos pasarle parámetros a través del Evento.

Otra ventaja de los los Observers es que podemos configurarlos para observar ciertos eventos.

Los atributos de un Observer son:

  • name: Un nombre único para el Observer
  • instance: El nombre de la clase Observer
  • disabled: Nos permite desactivar el Observer (por defecto es false)
  • shared: El tipo de vida del objeto, si es único o se crean nuevas en cada petición (por defecto es false)

Veamos un ejemplo práctico de un observer:

Estamos creando un Evento del del controlador de vistas de producto del módulo Catalog de Magento.

Cuando esté Evento se ejecute vamos a crear una clase Observer para poder escuchar que sucede y así realizar una serie de cambios.

Este Observer captura los datos del producto y usando Métodos Mágicos que podremos encontrar en Magento/Catalog/Model/Product,  aplica un descuento al producto si pertenece a una determinada categoría.

Por último he creado un Loguer que creará un nuevo fichero de Log en var/log/ llamado myObserverlog.log y que nos permite hacer debug de los datos del Observer.

Y como veis hemos aplicado el descuento correctamente al producto que pertenece a la categoría indicada.

Deja una respuesta

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.