Pergunta

digamos que criei um módulo personalizado que estenderá algumas funcionalidades como plug-ins do módulo principal Magento_Catalog e vamos chamá-lo de MyModule.MyModule já foi registrado e ativado.

Eu defini meu módulo e a sequência para magento_catalog no module.xml, criei os plugins e os declarei em etc/adminHtml/di.xml arquivo

1) O plug-in que estende a classe principal do módulo Magento deve estar na mesma estrutura de diretórios do pai que ele estende?Por exemplo, plugin para MyVendor\MyModule\Block\Adminhtml\Product\Edit.php estar em

namespace MyVendor\MyModule\Block\Adminhtml\Product\MyEdit.php

2) Não tenho certeza do que exatamente devo fazer para que MyModule seja invocado quando for para a página?

http://mydomain/admin/catalog/product/edit/id/8

Obrigado.

Foi útil?

Solução

1) O plug-in que estende a classe principal do módulo Magento deve estar na mesma estrutura de diretórios do pai que ele estende?Por exemplo:

Não, os plug-ins são classes independentes.

2) Não tenho certeza do que exatamente devo fazer para que MyModule seja invocado quando for para a página?

Esta pergunta não faz muito sentido.Um plugin é basicamente um “ouvinte” para chamadas em outros métodos de classe pública no Magento.Se você tiver um plugin para class A, você pode configurar ouvintes antes, depois e "ao redor" para métodos específicos na classe A.O ouvinte before permitirá que você altere os parâmetros da chamada do método.o ouvinte after permitirá que você altere o valor dos resultados, e o ouvinte around permitirá que você faça coisas extras antes que o método seja chamado ou cancele totalmente a chamada do método.Você pode querer revisar minha série de gerenciadores de objetos para todos os recursos do sistema de objetos do Magento 2.Isso deve ajudá-lo a decidir como deseja personalizar o comportamento do sistema Magento com seu plugin.

Outras dicas

você precisa adicionar no di.xml arquivo do seu módulo este

<preference for="Magento\Catalog\Block\Adminhtml\Product\Edit" type="MyVendor\MyModule\Block\Adminhtml\Product\MyEdit" />

Isso dirá ao Magento para usar sua classe em vez da classe principal.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a magento.stackexchange
scroll top