Wir können den Controller auf zwei Arten erweitern: mit Präferenz und mit Plugin. Aber ich verstehe das nicht, welches gut ist und welche Vor- / Nachteile die Präferenz gegenüber dem Plugin hat.
<preference for="Magento\Checkout\Controller\Index\Index" type="mymodule\Helloworld\Controller\Index\Index" />
<type name="Magento\Catalog\Model\Product">
<plugin name="getname-test-module" type="mymodule\Helloworld\Model\Plugin\Product" sortOrder="10"/>
</type>
module
magento2
event-observer
plugin
Anand Ontigeri
quelle
quelle
Antworten:
Verwenden Sie nach Möglichkeit Plugins und dann Beobachter (siehe Vor- und Nachteile der einzelnen Plugins ). Auf diese Weise können Sie Konflikte mit anderen Erweiterungen (Modulen von Drittanbietern) vermeiden.
Die Einstellung sollte nur verwendet werden, wenn die gesamte Implementierung der Kernklasse / Schnittstelle durch eine benutzerdefinierte ersetzt werden soll. Berücksichtigen Sie, dass jeweils nur eine Voreinstellung aktiv ist (welche durch die in definierte Reihenfolge definiert ist
module.xml
). Wenn also eine andere Erweiterung die Präferenz für dieselbe Klasse / Schnittstelle definiert, liegt ein Konflikt vor (diese Erweiterungen können nicht zusammenarbeiten).quelle
quelle
Zusätzliche Informationen: Fast alle Einstellungen, die in intern m2 verwendet werden, dienen nur dazu, die Beziehung zwischen der Basisbetonklasse und der Schnittstelle aufrechtzuerhalten, wie z.
Wie Sie sagen, es wird einmal verwendet, denke ich:
quelle