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.

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a magento.stackexchange
scroll top