Patrząc na podstawowy kod Magento 2, wydaje się, że istnieją dwa sposoby skonfigurowania trasy administratora.
Pierwszy
#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>
jest podobny do Magento 1. Dodajesz moduł do listy modułów na adminhtml
trasie, a Magento sprawdza go za Ciebie.
Drugi
#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>
konfigurujesz nową trasę ( cms
powyższy identyfikator ), a następnie dodajesz do niej moduł.
Czy jeden z nich jest „właściwym / preferowanym” sposobem robienia tego w Magento 2? Jeśli nie, jaka jest różnica między nimi? tzn. kiedy używałbyś jednego nad drugim?
Proszenie o nierozwiązywanie określonego problemu, ale upewnienie się, że tworzę swoje trasy we właściwy sposób i że unika się problemów podobnych do modułów Magento 1 (pobieranie bibliotek ajax, bezpieczeństwo itp.).
Natknąłem się również na to, szukając przykładów dodawania kontrolera adminhtml. Przeprowadziłem badania i oto, co znalazłem.
route id="adminhtml"
Sposób stosowany jest 24 razy w rdzeniu.before="Magento_Backend"
Sposób stosowany jest 31 razy w rdzeniu.Istnieje tylko 50 modułów z adminhtml / tras.xml, ale 24 + 31 = 55. Wskazówka nr 1.
Próbowałem znaleźć wspólny mianownik między tym, jaki typ modułów używa tego typu, ale wydaje się, że nie mogę go zidentyfikować. Może więc zmiana została wprowadzona w pewnym momencie, więc sprawdziłem synchronizację obu typów. Niestety było to dość trudne, ponieważ większość z nich była ostatnio edytowana w połowie września, aby wprowadzić nowe urny, więc musiałem użyć funkcji historii Githuba.
Zauważyłem wtedy, że niektóre pliki route.xml, w których
route id="adminhtml"
używana jest ta opcja, również używająbefore="Magento_Backend"
, patrz na przykład plik Rout.xml Magento_UrlRewrite . Nie mogę znaleźć żadnych rozstrzygających podobieństw między tymi trzema wariantami.Sprawdziłem również nowe moduły (które nie były w M1 i dlatego nie mogły zostać przeniesione, ale zostały napisane jako nowe dla M2), takie jak AdvancedPricingImportExport , Integration , MediaStorage i EncryptionKey i chociaż niektóre używają,
before="Magento_Backend"
a niektóre nie, wszystkie używają<route id="adminhtml">
tag. Spośród nich te bez tychbefore="Magento_Backend"
zostały ostatnio zmienione w lutym 2015 r., A te z tym tagiem wszystkie były edytowane po tej dacie.Tak więc, mój wstępny wniosek jest taki, że jest to preferowany sposób, aby to zrobić (albo wyraźnie postanowiono wewnętrznie w siedzibie Magento, albo nie);
Oczywiście chciałbym usłyszeć stanowisko głównego dewelopera Magento w tej sprawie.
AKTUALIZACJA: Anton Kril odpowiedział, zobacz jego odpowiedź na preferowany sposób, aby to zrobić.
źródło