Wenn Sie versuchen, ein Modul mit einem hello-world
Frontnamen wie in Magento 2 zu erstellen , wird eine Fehlermeldung angezeigt, die so aussieht .
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,}'.
Es scheint, dass Magento keine URL-Frontnamen möchte, die etwas anderes als eine Zahl, einen Buchstaben oder einen Unterstrich enthalten. Außerdem werden Frontnamen gezwungen, drei oder mehr Zeichen zu haben.
Die Einschränkung von Anzahl, Buchstabe und Unterstrich ist sinnvoll, da eine Routen-ID zum Erstellen eines Layout-Handles verwendet wird und " Sonderzeichen " dort ein Problem verursachen können. Die Beschränkung auf drei Zeichen ist jedoch verwirrend.
Kennt jemand den Grund dafür?
Antworten:
Der Grund war, unordentliche Deklarationen mit zu kurzen Bezeichnern zu vermeiden (genauso wie zu kurze Variableneinschränkungen in PHP-Code-Stil-Analysatoren).
Es wurde auf mehrere Feldtypen angewendet. Der Name der Routenfront weist diese Einschränkung versehentlich auf. Es wird behoben
quelle
Ändere die Hallo-Welt als Hallo-Welt
Gültige Zeichen sind Alphabet, numerisch und _
quelle
Ja, es ist in .xsd (routerIdType, routeIdType, moduleNameType, beforeAfterType, routeFrontNameType). Grund ist unbekannt.
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
quelle