Se você tentar criar um módulo com um nome de frente como hello-world
no Magento 2, receberá um erro parecido com este .
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,}'.
Parece que o Magento não deseja nomes de URLs com nada além de um número, letra ou sublinhado. Também força os nomes da frente a terem três ou mais caracteres.
A limitação de número, letra e sublinhado faz sentido, pois uma ID de rota é usada para criar um identificador de layout e caracteres " especiais " podem causar um problema. No entanto, o limite de três caracteres é confuso.
Alguém sabe a razão para isso?
Respostas:
O motivo foi evitar declarações confusas com identificadores muito curtos (o mesmo que limitações de variáveis muito curtas nos analisadores de estilo de código PHP).
Foi aplicado a vários tipos de campos. O nome da frente da rota tem essa limitação por engano. Será consertado
fonte
alterar olá mundo como hello_world
Os caracteres válidos são alfabeto, numérico e _
fonte
Sim, está em .xsd (routerIdType, routeIdType, moduleNameType, beforeAfterType, routeFrontNameType). A razão é desconhecida.
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
fonte