Trabalhar com eventos e observers é uma das muitas maneiras de estender e modificar funcionalidades no Magento. Diferente dos Plugins, eventos são disparados em momentos e pontos específicos.
Para que servem os Eventos e Observers
Eles servem como porta de entrada para novas customizações e permitem que classes observadoras (Observers) escutem estes eventos quando eles são chamados.
Ao disparar um evento, é comum que a classe que realizou a ação passe objetos e dados adicionais para quem estiver escutando aquele evento. Por sua vez, a classe observadora pode trabalhar com esses dados para realizar integrações, ou disparar outras ações.
Em alguns casos, a classe que disparou determinado evento trabalhará com os dados enviados. Em outras palavras, permitindo que os observers modifiquem dados que serão usados por ela, modificando assim o comportamento de classes e ações.
Exemplo de Evento
# \Magento\Customer\Model\Session
public function setCustomerAsLoggedIn($customer)
{
$this->regenerateId();
$this->setCustomer($customer);
$this->_eventManager->dispatch('customer_login', ['customer' => $customer]);
$this->_eventManager->dispatch('customer_data_object_login', ['customer' => $this->getCustomerDataObject()]);
return $this;
}
No exemplo acima, dois eventos são disparados, e o objeto $customer é passado.
Veja como trabalhar com Eventos e Observers no Magento 2 para mais detalhes. Neste artigo focaremos em como desabilitar um observer.
Desabilitando um observer no Magento 2
Em alguns casos, ao invés de criar um Plugin para interceptar determinado comportamento, podemos querer apenas desabilitar a classe que está observando um evento.
Para isso precisaremos saber o nome do evento e o nome do observer que queremos desativar.
No exemplo acima, temos o evento customer_login sendo disparado pelo método \Magento\Customer\Model\Session::setCustomerAsLoggedIn. E também temos um observer no módulo de checkout que escuta este evento.
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Event/etc/events.xsd">
<event name="customer_login">
<observer name="loadCustomerQuote" instance="Magento\Checkout\Observer\LoadCustomerQuoteObserver" />
</event>
<event name="customer_logout">
<observer name="unsetAll" instance="Magento\Checkout\Observer\UnsetAllObserver" />
</event>
</config>
Note que o nome do Observer é definido na linha 3 (loadCustomerQuote). Ele é responsável por recuperar os itens de do carrinho do usuário e mesclá-los ao carrinho da sessão atual após o login.
Caso queiramos cancelar este comportamento, podemos desabilitar seu observer. Para isso, tudo o que precisamos fazer é criar um módulo e adicionar o seguinte arquivo:
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Event/etc/events.xsd">
<event name="customer_login">
<observer name="loadCustomerQuote" disabled="true"/>
</event>
</config>
Desta forma, informamos o nome do evento (linha 2), o nome do observer (linha 3) e adicionamos a propriedade disabled="true" informando que desejamos desabilitar este observer.
Simples, não é mesmo?
- Guest checkout bloqueado na API REST do Magento 2? Confira isso. - 7 de julho de 2026
- Você precisa testar esta plataforma de e-commerce - 9 de fevereiro de 2026
- A hora de montar o seu OnlyFans chegou! Veja 8 ideias pra começar o seu. - 4 de dezembro de 2024
Deixe seu comentário
[fbcomments url="https://www.magenteiro.com/blog/magento-2/como-desabilitar-um-observer/"]