Если вы попытаетесь создать модуль с передним именем, как hello-world
в Magento 2, вы получите ошибку, которая выглядит следующим образом .
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,}'.
Похоже, что Magento не хочет, чтобы передовые имена URL содержали что-либо кроме числа, буквы или подчеркивания. Это также заставляет имена фронтов иметь три или более символов.
Ограничения цифрами, буквами и подчеркиванием имеют смысл, поскольку идентификатор маршрута используется для создания дескриптора макета, и « специальные » символы могут вызвать проблемы. Однако ограничение в три символа сбивает с толку.
Кто-нибудь знает причину этого?
Ответы:
Причина заключалась в том, чтобы избежать беспорядочных объявлений со слишком короткими идентификаторами (такими же, как слишком короткие ограничения переменных в анализаторах стиля кода PHP).
Он был применен к нескольким типам полей. Имя фронта маршрута имеет это ограничение по ошибке. Это будет исправлено
источник
изменить hello-world на hello_world
Допустимые символы: алфавит, цифра и _
источник
Да, он находится в формате .xsd (routerIdType, routeIdType, moduleNameType, beforeAfterType, routeFrontNameType). Причина неизвестна.
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
источник