Si intenta crear un módulo con un nombre frontal como hello-world
en Magento 2, obtendrá un error similar al siguiente .
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 Magento no quiere nombres de URL que tengan algo más que un número, letra o guión bajo. También obliga a los nombres de frente a tener tres o más caracteres.
La limitación de números, letras y guiones bajos tiene sentido ya que se usa una ID de ruta para crear un controlador de diseño y los caracteres " especiales " pueden causar un problema. Sin embargo, el límite de tres caracteres es confuso.
¿Alguien sabe la razón de esto?
Respuestas:
La razón era evitar declaraciones desordenadas con identificadores demasiado cortos (lo mismo que limitaciones de variables demasiado cortas en analizadores de estilo de código PHP).
Se aplicó a múltiples tipos de campo. El nombre del frente de la ruta tiene esta limitación por error. Será arreglado
fuente
cambiar hello-world como hello_world
Los caracteres válidos son alfabeto, numérico y _
fuente
Sí, está en .xsd (routerIdType, routeIdType, moduleNameType, beforeAfterType, routeFrontNameType). La razón es desconocida.
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
fuente