Si vous essayez de créer un module avec un nom de devant comme hello-world
dans Magento 2, vous obtiendrez une erreur qui ressemble à ceci .
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,}'.
Il semble que Magento ne veuille pas de noms de URL avant qui contiennent autre chose qu'un chiffre, une lettre ou un trait de soulignement. Il oblige également les noms de front à avoir trois caractères ou plus.
Le nombre, la lettre et la limitation de soulignement ont du sens, car un ID d'itinéraire est utilisé pour créer un descripteur de mise en page et des caractères " spéciaux " peuvent provoquer un problème. Cependant, la limite de trois caractères est source de confusion.
Est-ce que quelqu'un sait quelle est la raison de cela?
Réponses:
La raison était d'éviter les déclarations désordonnées avec des identifiants trop courts (comme les limitations de variables trop courtes dans les analyseurs de style de code PHP).
Il a été appliqué à plusieurs types de champs. Le nom du front de route a cette limitation par erreur. Il sera corrigé
la source
changer hello-world en hello_world
Les caractères valides sont l'alphabet, le numérique et le _
la source
Oui, il est en .xsd (routerIdType, routeIdType, moduleNameType, beforeAfterType, routeFrontNameType). La raison est inconnue.
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
la source