Category
04/07/2017

Como funciona e como implementar eventos/observers no Magento?

Gustavo Rodrigues

Desenvolvedor PHP

Usado por grandes lojas globais, a plataforma Magento é líder no mercado de E-commerce, sendo a ferramenta mais usada em todo o mundo. Essa ferramenta implementa diversos padrões de projeto, e um deles é o padrão Observer.

O padrão Observer foi criado com a intenção de observar comportamentos e/ou estado de objetos, ou seja, eles estão “assistindo” algo, no nosso caso, eventos. No Magento, a idéia desse padrão é que, quando um evento é disparado, os observers que assistem a esse evento sejam executados.

Abaixo temos um exemplo de como um evento é disparado:

Código Magento

Caso você não entenda muito bem o que este código está fazendo, não se desespere! Vamos detalhar melhor para facilitar.

Estamos na classe Mage_Customer_Model_Session, que é a classe que gerencia a sessão do usuário. Quando o usuário realiza o login, o método setCustomerAsLoggedIn é chamado, e durante sua execução, ele dispara um evento. O evento aqui disparado é chamado de “customer_login”, e um array contendo o objeto “customer” é enviado como parametro (o objeto representa o usuário que está fazendo login). Esse objeto será enviado para todos os observadores desse evento.

A pergunta agora é: como fazemos para executar nosso código quando esse evento for disparado, ou seja, como podemos “observar” o evento?

Na configuração do nosso módulo, temos como relacionar uma classe e um método para, quando esse evento for chamado, executar o nosso código. Veja o trecho de código abaixo do arquivo config.xml

Código Magento

Aqui estamos dizendo para o nosso sistema que, quando o evento “customer_login” for disparado, devemos executar o método saveCustomerDateLogin que está na classe Observer no Model do nosso módulo, chamado Itelios.

Pronto, aqui já estaremos “observando” o evento e executando o código do nosso observer quando o evento for chamado. Vamos ver agora a implementação do nosso método.

Nesse método vamos salvar o e-mail e a data de login do cliente na tabela referente ao nosso módulo “Itelios_loginUser”. Veja a implementação abaixo.

Código Magento

Pronto, agora quando nossos clientes logarem em nosso sistema, salvaremos o e-mail e a data em nossa base de dados.

Category

Tags

Adicione um novo comentário