Betrachtet man den Magento 2-Kerncode, so gibt es anscheinend zwei Möglichkeiten, eine Admin-Route einzurichten.
Der Erste
#File: vendor/magento/module-media-storage/etc/adminhtml/routes.xml
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:App/etc/routes.xsd">
<router id="admin">
<route id="adminhtml">
<module name="Magento_MediaStorage" />
</route>
</router>
</config>
ähnelt Magento 1. Sie fügen Ihr Modul einer Liste von Modulen in der adminhtml
Route hinzu und Magento überprüft es für Sie.
Der Zweite
#File: vendor/magento/module-cms/etc/adminhtml/routes.xml
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:App/etc/routes.xsd">
<router id="admin">
<route id="cms" frontName="cms">
<module name="Magento_Cms" before="Magento_Backend" />
</route>
</router>
</config>
Haben Sie eine neue Route eingerichtet (ID cms
oben) und Ihr Modul hinzugefügt?
Ist eine davon die "richtige / bevorzugte" Art, dies in Magento 2 zu tun? Wenn nicht, was ist der Unterschied zwischen den beiden? dh wann würdest du eins übereinander verwenden?
Es wird darum gebeten, ein bestimmtes Problem nicht zu lösen, sondern sicherzustellen, dass meine Routen korrekt erstellt werden und dass Probleme wie bei Magento 1-Modulen (Einlesen von Ajax-Bibliotheken, Sicherheit usw.) vermieden werden.
Ich bin auch darauf gestoßen, als ich nach Beispielen gesucht habe, wie man einen Admin-HTML-Controller hinzufügt. Ich habe ein bisschen recherchiert und das habe ich gefunden.
Der
route id="adminhtml"
Weg wird im Kern 24 mal benutzt.Der
before="Magento_Backend"
Weg wird im Kern 31 mal benutzt.Es gibt nur 50 Module mit einer adminhtml / routes.xml, aber 24 + 31 = 55. Hinweis # 1.
Ich habe versucht, einen gemeinsamen Nenner zwischen den Modulen zu finden, die welchen Typ verwenden, aber ich kann anscheinend keine identifizieren. Vielleicht wurde die Änderung zu einem bestimmten Zeitpunkt eingeführt, sodass ich das Timing der beiden Typen überprüfte. Leider war dies ziemlich schwierig, da die meisten von ihnen Mitte September zuletzt bearbeitet wurden, um die neuen Urnen vorzustellen, sodass ich Githubs Verlaufsfunktion verwenden musste.
Ich habe dann einige routes.xml Dateien bemerkt , wo die
route id="adminhtml"
Option verwendet wird , auch die Verwendungbefore="Magento_Backend"
, siehe zum Beispiel Magento_UrlRewrite die routes.xml Datei . Ich kann keine schlüssigen Gemeinsamkeiten zwischen den drei Varianten finden.Ich habe auch die neuen Module (die nicht in M1 waren und daher nicht portiert werden konnte, wurden aber neu für M2 geschrieben), wie AdvancedPricingImportExport , Integration , MediaStorage und EncryptionKey und obwohl einige Verwendung der
before="Magento_Backend"
und andere nicht, sie alle nutzen das<route id="adminhtml">
tag. Unter diesen wurden diejenigen ohne dasbefore="Magento_Backend"
letzte Mal im Februar 2015 geändert, während diejenigen mit diesem Tag alle nach diesem Datum bearbeitet wurden .Meine vorläufige Schlussfolgerung lautet also, dass dies der bevorzugte Weg ist (entweder explizit bei Magento HQ festgelegt oder nicht);
Ich würde natürlich gerne die Position des Magento-Core-Entwicklers dazu hören.
UPDATE: Anton Kril antwortete, siehe seine Antwort für den bevorzugten Weg, dies zu tun.
quelle