Mengapa Magento 2 Memaksa URL menjadi 3+ ​​Karakter

9

Jika Anda mencoba membuat modul dengan nama depan seperti hello-worlddi 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?

Alan Storm
sumber
Mungkin ini karena validasi XSD yang ada.
Bhargav Mehta
2
@Bhargav Ya, tapi mengapa XSD dikonfigurasi seperti itu?
Alan Storm

Jawaban:

4

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

Anton Kril
sumber
0

ubah hello-world sebagai hello_world

Karakter yang valid adalah alfabet, angka dan _

Sankar Venkat
sumber
Ini sepertinya tidak menjawab pertanyaan?
Alan Storm
-2

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

PayMage
sumber
2
Saya tidak tertarik dengan detail teknis tentang bagaimana pembatasan diterapkan, saya ingin tahu mengapa itu ada di tempat pertama.
Alan Storm