Magento2 Attivare il modulo personalizzato che estese il modulo principale
-
29-09-2020 - |
Domanda
Diciamo che ho creato un modulo personalizzato che estenderà alcune funzionalità come plugin dal modulo principale magento_catalog e lascia chiamare la mymodule. MyModule è già stato registrato e attivato.
Ho definito il mio modulo e la sequenza per Magento_Catalog in Module.xml Ho creato i plugin e li ha dichiarati nel file etc / adminhtml / di.xml
1) Il plugin che estende la classe del modulo Magento Core deve essere nella stessa struttura di directory del genitore che si estende?Ad esempio, plugin per mytendor \ mymodule \ block \ adminhtml \ prodotto \ edit.php da essere in
namespace MyVendor\MyModule\Block\Adminhtml\Product\MyEdit.php
.
2) Non sono del tutto sicuro di cosa dovrei fare esattamente, quindi mymodule viene invocato quando vado alla pagina?
http://mydomain/admin/catalog/product/edit/id/8
.
Grazie.
Soluzione
.1) Il plugin che estende la classe del modulo Magento Core deve essere nella stessa struttura di directory del genitore che si estende? Ad esempio:
No, i plugin sono classi stand-alone.
.2) Non sono del tutto sicuro di cosa dovrei fare esattamente, quindi mymodule viene invocato quando vado alla pagina?
Questa domanda non ha senso. Un plugin è fondamentalmente un "ascoltatore" per le chiamate su altri metodi di classe pubblica in Magento. Se si dispone di un plugin per class A
, è possibile impostare prima, dopo, e "Around" Listener per i metodi specifici per i metodi specifici sulla classe A. L'ascoltatore prima consentirà di modificare i parametri nella chiamata del metodo. L'ascoltatore dopo l'ascolto ti consentirà di modificare il valore dei risultati e il listener attorno a cui ti consentirà di fare cose extra prima che il metodo venga chiamato o annullare completamente la chiamata del metodo. Potresti voler recensire My Object Manager Series per tutte le funzionalità del sistema oggetto di Magento 2. Questo dovrebbe aiutarti a decidere come si desidera personalizzare il comportamento del sistema di Magento con il tuo plugin.
Altri suggerimenti
È necessario aggiungere il file di.xml
del modulo Questo
<preference for="Magento\Catalog\Block\Adminhtml\Product\Edit" type="MyVendor\MyModule\Block\Adminhtml\Product\MyEdit" />
.
Questo racconterà Magento a usare la tua classe invece del nucleo.