English:
Hi,

today I will talk about a important feature in development of custom extensions for Magento, the observers.
Suppose that in a specific action in your store you need to execute a piece of code or another action, for example when an order is cancelled you need to send an specific email to the customer, you can do that using observers.
In Magento 1 this was possible adding in the config.xml the events inside the events tag, but in Magento 2 we have the events.xml inside the etc folder.

In this link you can see the all available dispatched events for Magento 2. So let´s create our first observer.

This is a example of events.xml:

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Event/etc/events.xsd">
    <event name="order_cancel_after">
        <observer name="igorludgero_order_cancel" instance="Igorludgero\Example\Observer\OrderCancel" />
    </event>
</config>

I declared in this events.xml file an observer to the event ‘order_cancel_after’, so when an order is cancelled the observer class Igorludgero\Example\Observer\OrderCancel will be called.

The OrderCancel is created inside the Observer folder in my extension folder. This is the class:

namespace Igorludgero\Example\Observer;

use Magento\Framework\Event\ObserverInterface;
use Magento\Framework\Event\Observer;


class OrderCancel implements ObserverInterface
{
    public function __construct()
    {

    }

    public function execute(Observer $observer)
    {

        $order = $observer->getData('order');

        //Put your code logic

        return $this;
    }
}

Look the class implements the ObserverInterface class and you have to put your code logic in the execute method. In this method you get an Observer object and you will work using it.
Basically that’s all, I hope this help you with your code. Regards.

 

Português

Olá,

hoje vou falar sobre um recurso muito importante no desenvolvimento de extensões para Magento, os Observers.

Vamos supor que em uma ação específica na plataforma você precise executar um pedaço de código ou uma outra ação, por exemplo quando uma compra for cancelada você precisa enviar um e-mail específico para o cliente, você pode fazer isso usando Observers.
No Magento 1 isso era possível adicionado no arquivo config.xml os eventos dentro da tag “events”, mas no Magento 2 nós temos um XML exclusivo para isso chamado events.xml que fica localizado dentro da pasta etc.
Neste link você pode visualizar todas as ações de Observer possíveis no Magento. Então vamos criar nosso primeiro Observer.

Este é o exemplo do nosso events.xml:

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Event/etc/events.xsd">
    <event name="order_cancel_after">
        <observer name="igorludgero_order_cancel" instance="Igorludgero\Example\Observer\OrderCancel" />
    </event>
</config>

Eu declarei no arquivo events.xml um Observer para o evento ‘order_cancel_after’, então quando uma compra for cancelada a classe de Observer Igorludgero\Example\Observer\OrderCancel será chamada.

A classe de Observer OrderCancel é criada dentro do diretório Observer que está localizado dentro do diretório de nossa extensão. Este é o código fonte da classe:

namespace Igorludgero\Example\Observer;

use Magento\Framework\Event\ObserverInterface;
use Magento\Framework\Event\Observer;


class OrderCancel implements ObserverInterface
{
    public function __construct()
    {

    }

    public function execute(Observer $observer)
    {

        $order = $observer->getData('order');

        //Aqui implemente seu código

        return $this;
    }
}

Veja que nossa classe Observer implementa a classe interface ObserverInterface e nosso código fonte deve ser implementado no método execute que é o método executado ao instanciar o objeto da classe. Neste método você recebe um objeto do tipo Observer e você irá trabalhar sua lógica obtendo suas informações necessárias através dele.

Basicamente seria isso, espero que tenha ajudado nos estudos. Abraços!

Magento 2 – Observers

Igor Ludgero


PHP & Magento Developer from Brazil.


Post navigation


Leave a Reply

Your email address will not be published. Required fields are marked *

Pin It on Pinterest