Jika Anda mencoba membuat modul dengan nama depan seperti hello-world
di Magento 2, Anda akan mendapatkan kesalahan yang terlihat seperti ini .
Invalid XML in file /Users/alanstorm/Sites/magento-2-with-keys/magento2/app/code/Pulsestorm/HelloPestle/etc/frontend/routes.xml:
Element 'route', attribute 'id': [facet 'pattern'] The value
'hello-world' is not accepted by the pattern '[A-Za-z0-9_]{3,}'.
Sepertinya Magento tidak menginginkan nama depan URL yang memiliki apa pun selain angka, huruf, atau garis bawah di dalamnya. Itu juga memaksa nama depan untuk memiliki tiga karakter atau lebih.
Jumlah, huruf, dan batasan garis bawah masuk akal karena ID rute digunakan untuk membuat pegangan tata letak dan karakter " khusus " di sana dapat menyebabkan masalah. Namun, batas tiga karakter membingungkan.
Adakah yang tahu alasannya?
Jawaban:
Alasannya adalah untuk menghindari deklarasi berantakan dengan pengidentifikasi terlalu pendek (sama seperti batasan variabel terlalu pendek dalam analisis gaya kode PHP).
Itu diterapkan ke beberapa jenis bidang. Nama depan rute tidak sengaja memiliki batasan ini. Itu akan diperbaiki
sumber
ubah hello-world sebagai hello_world
Karakter yang valid adalah alfabet, angka dan _
sumber
Ya, itu dalam .xsd (routerIdType, routeIdType, moduleNameType, beforeAfterType, routeFrontNameType). Alasannya tidak diketahui.
https://github.com/magento/magento2/blob/077584c99ebb8007cad176c3b9a0144a05c259cd/lib/internal/Magento/Framework/App/etc/routes.xsd
https://github.com/magento/magento2/blob/077584c99ebb8007cad176c3b9a0144a05c259cd/lib/internal/Magento/Framework/App/etc/routes_merged.xsd
sumber