Melihat kode inti Magento 2, tampaknya ada dua cara mengatur rute admin.
Pertama
#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>
mirip dengan Magento 1. Anda menambahkan modul Anda ke daftar modul di adminhtml
rute, dan Magento memeriksanya untuk Anda.
Kedua
#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>
Anda telah mengatur rute baru (id di cms
atas), dan kemudian menambahkan modul Anda ke sana.
Apakah salah satu dari ini adalah cara "benar / disukai" dalam melakukan ini di Magento 2? Jika tidak, apa bedanya keduanya? yaitu kapan Anda akan menggunakan satu di atas yang lain?
Meminta untuk tidak memecahkan masalah tertentu, tetapi untuk memastikan saya membuat rute saya dengan cara yang benar dan bahwa masalah yang mirip dengan modul Magento 1 (menarik perpustakaan ajax, keamanan, dll.) Dihindari.
Saya menemukan ini juga sambil mencari contoh cara menambahkan controller adminhtml. Saya melakukan riset dan inilah yang saya temukan.
The
route id="adminhtml"
cara digunakan 24 kali dalam inti.Itu
before="Magento_Backend"
cara digunakan 31 kali dalam inti.Hanya ada 50 modul dengan adminhtml / routes.xml tetapi 24 + 31 = 55. Petunjuk # 1.
Saya mencoba mencari penyebut yang sama antara jenis modul apa yang menggunakan tipe apa, tapi sepertinya saya tidak bisa mengidentifikasi. Jadi mungkin perubahannya diperkenalkan pada titik waktu tertentu, jadi saya memeriksa waktunya pada dua jenis. Sayangnya ini cukup sulit karena kebanyakan dari mereka diedit pertengahan September untuk memperkenalkan guci baru jadi saya harus menggunakan fungsi sejarah Github.
Saya kemudian memperhatikan beberapa file routes.xml di mana
route id="adminhtml"
opsi digunakan juga menggunakanbefore="Magento_Backend"
, lihat misalnya file tables.xml Magento_UrlRewrite . Sepertinya saya tidak dapat menemukan kesamaan konklusif antara ketiga varian.Saya juga memeriksa modul-modul baru (yang tidak dalam M1 dan karena itu tidak dapat porting tetapi ditulis baru untuk M2), seperti AdvancedPricingImportExport , Integrasi , MediaStorage dan EncryptionKey dan meskipun beberapa menggunakan
before="Magento_Backend"
dan beberapa tidak, mereka semua menggunakan yang<route id="adminhtml">
tag. Di antara ini, yang tanpabefore="Magento_Backend"
yang terakhir diubah pada Februari 2015 sementara yang dengan tag itu semua diedit setelah tanggal itu.Jadi, kesimpulan awal saya adalah bahwa ini adalah cara yang disukai untuk melakukannya (baik secara eksplisit diputuskan secara internal di Magento HQ atau tidak);
Saya ingin mendengar posisi inti Magento tentang ini, jelas.
PEMBARUAN: Anton Kril menjawab, lihat jawabannya untuk cara yang disukai untuk melakukan ini.
sumber