Como criar eventos e Observers Personalizados no Magento 2

컨텍스트리잔도



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
    

    좋은 웹페이지 즐겨찾기