Почему Magento 2 заставляет URL быть 3+ символами

9

Если вы попытаетесь создать модуль с передним именем, как 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 содержали что-либо кроме числа, буквы или подчеркивания. Это также заставляет имена фронтов иметь три или более символов.

Ограничения цифрами, буквами и подчеркиванием имеют смысл, поскольку идентификатор маршрута используется для создания дескриптора макета, и « специальные » символы могут вызвать проблемы. Однако ограничение в три символа сбивает с толку.

Кто-нибудь знает причину этого?

Алан Сторм
источник
Может быть, это из-за валидации XSD.
Бхаргав Мехта
2
@Bhargav Да, но почему XSD настроен таким образом?
Алан Сторм

Ответы:

4

Причина заключалась в том, чтобы избежать беспорядочных объявлений со слишком короткими идентификаторами (такими же, как слишком короткие ограничения переменных в анализаторах стиля кода PHP).

Он был применен к нескольким типам полей. Имя фронта маршрута имеет это ограничение по ошибке. Это будет исправлено

Антон Криль
источник
0

изменить hello-world на hello_world

Допустимые символы: алфавит, цифра и _

Санкар Венкат
источник
Кажется, это не отвечает на вопрос?
Алан Шторм
-2

Да, он находится в формате .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

PayMage
источник
2
Меня не интересуют технические подробности того, как было реализовано ограничение, я хочу знать, почему оно существует в первую очередь.
Алан Шторм