Como criar eventos e Observers Personalizados no Magento 2
9094 단어 phptutorialbraziliandevsmagento2
컨텍스트리잔도
O que é o padrão pub-sub?
É um padrão de mensagens onde os publicadores das mensagens (Publishers) categorizam as mensagens publicadas em classes sem conhecimentos dos inscritos (구독자). Os publicadores não programam as mensagens para serem enviradas diretamente para os inscritos e os inscritos não manifestam interesses em uma ou mais classes e só recebem as mensagens que possuem interesse, sem saber em quais publicadores exist
Eventos e Observadores no Magento
Os eventos e observadores são baseados no padrão pub-sub, onde eventos são disparados quando certas ações são ativadas, podendo passar dados para qualquer observador configurado para observar o evento.
Observadores são capazes de modificar o comportamento da aplicação, porque são dinamicamente injetados no fluxo da execução.
보아스 프라티카스
Utilizar eventos e observadores é uma das principais maneiras de estender as funcionalidades do Magento. Eventos podem impactar em problemas de instabilidade no fluxo do Magento, então é recomendado manter os observadores simples e eficientes (alguns eventos são comumente disparados).
Os observadores não devem possuir lógica de negócio, o observador deve chamar as classes que encapsulam as lógicas de negócio. É recomendado que essas classes que possuam a regra de negócio não disparem eventos, que em cascata, disparem o evento original.
Não abordaremos nesse artigo os escopos de lojas, mas recomendo que semper que for Implementar um observador, busque sobre os escopos e em qual área deve ser aplicado.
Código para disparar eventos
Eventos podem ser disparados utilizando a classe
\Magento\Framework\Event\ManagerInterface
. Esta classe pode ser instanciada através de injeção de 의존적 구성자 없음.Para disparar um evento é utilizado o método
dispatch()
da classe de gerenciador de eventos passando como parametro o nome do evento que você queira disparar e como um segundo parametro um array com parametro o nome do evento que você queira disparar e como um segundo parâmetro um array com parametosibilisque deobservseador.<?php
namespace {Vendor}\{Module}\{Directory};
use Magento\Framework\Event\ManagerInterface;
class {ClassName}
{
private ManagerInterface $eventManager;
public function __construct(
ManagerInterface $eventManager
) {
$this->eventManager = $eventManager;
}
public function {methodName}(): {type}
{
$this->eventManager->dispatch('{event_name}', ['{paramName}' => $paramName]);
// Code here
}
}
코디고 파라 옵저버스
이벤트.xml
Eventos Personalizados podem ser disparados passando o nome do eventos para o gerenciador de eventos quando o metodo
dispatch()
for chamado.O evento possui um nome único e e reference no arquivo
events.xml
onde é definido qual será a classe Observer que reagirá a quando for disparado. Esses arquivos devem seguir a estruturas de 파스타\{Vendor}\{Module}\etc\{area}\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="{event_name}">
<observer name="{observer_name}" instance="{Vendor}\{Module}\Observer\{ObserverName}" />
</event>
</config>
이벤트 이름: é um atributo obrigatório que registra o nome do evento que será chamado através do metodo dispatch pelo gerenciador de eventos;
관찰자 이름: é um atributo obrigatório que nomeia o observador;
관찰자 사례: é um atributo no qual deve ser inserido o caminho da classe do observador;
옵저버 비활성화됨: é um atributo opcional que determina se o observador está ativo ou não (o valor padrão é true).
관찰자
Observadores são classes que afetam e podem influenciar no compportamento geral do sistema, performance ou alteração na regra de negócio. Observadores são semper executados quando o evento que ele está configurado é chamado pelo gerenciador de eventos através do metodo
dispatch()
.O observador deve seguir a estrutura de 파스타
\{Vendor}\{Module}\Observer\{ObserverName}
e deveimplementar a classe \Magento\Framework\Event\ObserverInterface
, que obriga a classe a implementationar o metodo execute(\Magento\Framework\Event\Observer $observer)
.Os observadores são capazes de utilizar parametros passados ao disparar os eventos.
<?php
namespace {Vendor}\{Module}\Observer;
use Magento\Framework\Event\ObserverInterface;
use Magento\Framework\Event\Observer;
class {ObserverName} implements ObserverInterface
{
public function execute(Observer $observer): {type}
{
$observer->getData('{param}');
// Code here
}
}
피날리잔도
Valores entre chaves (
{test}
) devem ser alterados na implementação do código.
Habilitando as alterações
comando PHP para limpar todos os caches de armazenamento em cache do processos를 실행합니다.
php bin/magento cache:clean
php bin/magento flush
디레토리오스 에 아르키보스
세게 a lista de diretórios e arquivos que devem ser criados.
- app/
- code/
- {Vendor}/
- {Module}/
- etc/
- events.xml
- module.xml
- Observer/
- {Observername}.php
- registration.php
- composer.json
Reference
이 문제에 관하여(Como criar eventos e Observers Personalizados no Magento 2), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/santanaluc94/como-criar-eventos-e-observers-personalizados-no-magento-2-2el8텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)