Jeśli spróbujesz utworzyć moduł o nazwie frontowej jak hello-world
w 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?
Odpowiedzi:
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
źródło
zmień hello-world na hello_world
Prawidłowe znaki to alfabet, cyfra i _
źródło
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
źródło