Dlaczego Magento 2 wymusza na adresach URL ponad 3 znaki

9

Jeśli spróbujesz utworzyć moduł o nazwie frontowej jak hello-worldw Magento 2, pojawi się błąd, który wygląda następująco .

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,}'.

Wygląda na to, że Magento nie chce, aby nazwy frontów URL zawierały coś innego niż cyfrę, literę lub znak podkreślenia. Wymusza także, aby pierwsze nazwiska miały trzy lub więcej znaków.

Ograniczenie liczby, litery i podkreślenia ma sens, ponieważ identyfikator trasy służy do tworzenia uchwytu układu, a „ specjalne ” znaki mogą powodować problem. Limit trzech znaków jest jednak mylący.

Czy ktoś zna przyczynę tego?

Alan Storm
źródło
Być może wynika to z istniejących sprawdzeń poprawności XSD.
Bhargav Mehta
2
@Bhargav Tak, ale dlaczego XSD jest skonfigurowany w ten sposób?
Alan Storm

Odpowiedzi:

4

Powodem było uniknięcie niechlujnych deklaracji ze zbyt krótkimi identyfikatorami (to samo, co zbyt krótkie ograniczenia zmiennych w analizatorach kodu PHP).

Zastosowano go do wielu typów pól. Nazwa frontu trasy ma omyłkowo to ograniczenie. Zostanie to naprawione

Anton Kril
źródło
0

zmień hello-world na hello_world

Prawidłowe znaki to alfabet, cyfra i _

Sankar Venkat
źródło
To nie wydaje się odpowiadać na pytanie?
Alan Storm
-2

Tak, jest w formacie .xsd (routerIdType, routeIdType, moduleNameType, beforeAfterType, routeFrontNameType). Powód jest nieznany.

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
źródło
2
Nie jestem zainteresowany szczegółami technicznymi, w jaki sposób zostało wdrożone ograniczenie, chcę wiedzieć, dlaczego w ogóle istnieje.
Alan Storm