Frage

Nehmen wir an, ich habe ein benutzerdefiniertes Modul erstellt, das einige Funktionen als Plugins des Magento_Catalog-Kernmoduls erweitert, und nennen wir es MyModule.MyModule wurde bereits registriert und aktiviert.

Ich habe mein Modul und die Sequenz für Magento_Catalog in module.xml definiert. Ich habe die Plugins erstellt und in etc/adminHtml/di.xml -Datei deklariert

1) Muss sich das Plugin, das die Magento-Kernmodulklasse erweitert, in derselben Verzeichnisstruktur befinden wie das übergeordnete Plugin, das es erweitert?Beispielsweise muss das Plugin für MyVendor\MyModule\Block\Adminhtml\Product\Edit.php enthalten sein

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

2) Ich bin nicht ganz sicher, was genau ich tun soll, damit MyModule aufgerufen wird, wenn ich auf die Seite gehe?

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

Danke schön.

War es hilfreich?

Lösung

1) Muss sich das Plugin, das die Magento-Kernmodulklasse erweitert, in derselben Verzeichnisstruktur befinden wie das übergeordnete Plugin, das es erweitert?Zum Beispiel:

Nein, Plugins sind eigenständige Klassen.

2) Ich bin nicht ganz sicher, was genau ich tun soll, damit MyModule aufgerufen wird, wenn ich auf die Seite gehe?

Diese Frage ergibt nicht ganz Sinn.Ein Plugin ist im Grunde ein „Listener“ für Aufrufe anderer öffentlicher Klassenmethoden in Magento.Wenn Sie ein Plugin für haben class A, können Sie Vorher-, Nachher- und „um“-Listener für bestimmte Methoden in Klasse A einrichten.Mit dem Before-Listener können Sie Parameter für den Methodenaufruf ändern.Mit dem After-Listener können Sie den Wert der Ergebnisse ändern, und mit dem Around-Listener können Sie zusätzliche Dinge tun, bevor die Methode aufgerufen wird, oder den Methodenaufruf vollständig abbrechen.Vielleicht möchten Sie es noch einmal überprüfen meine Objektmanager-Reihe für alle Funktionen des Objektsystems von Magento 2.Dies soll Ihnen bei der Entscheidung helfen, wie Sie das Systemverhalten von Magento mit Ihrem Plugin anpassen möchten.

Andere Tipps

Sie müssen das hinzufügen di.xml Datei Ihres Moduls

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

Dadurch wird Magento angewiesen, Ihre Klasse anstelle der Kernklasse zu verwenden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit magento.stackexchange
scroll top