feat(router): modular addon routes (ms3.routes.d)#171
Conversation
- Router::loadRoutesFromDirectory() + coreAddonRoutesDirectory()
- Load in api.php, Api\Index, Api\Router; aligned connector processors
- Resolver creates ms3.routes.d/{web,manager}; example .dist files
- CHANGELOG
|
Хорошая фича, паттерн 1.
|
- Processors\Api\Router: drop web.php and ms3.routes.d/web (built-in manager) - coreAddonRoutesDirectory: whitelist manager|web - Document dual entry for web fragments (.dist, routes headers, class docblocks) - CHANGELOG: correct connector behavior per review
Описание
Модульная загрузка роутов аддонов из
core/config/ms3.routes.d/web/иcore/config/ms3.routes.d/manager/после системных (config/routes/*.php) и пользовательских (ms3_routes_*.custom.php) файлов, в алфавитном порядке*.php, доbuild()диспетчера. Переопределение маршрутов — по внутреннему ключуMETHOD:PATTERN, как и для custom-файлов.Добавлены
Router::loadRoutesFromDirectory(),Router::coreAddonRoutesDirectory('manager'|'web')с проверкой аргумента. Web-фрагменты подключаются вapi.phpиProcessors\Api\Index(кастомные фронты / Vue-менеджер).Processors\Api\Router(встроенная админка MODX) грузит только manager-цепочку, безweb.phpи безms3.routes.d/web/. Resolver при установке создаёт каталогиms3.routes.d/{web,manager}вcore/config/. В пакете —example-addon.php.distс пояснением про точки входа.Цель: несколько сторонних компонентов могут добавлять роуты отдельными файлами без конфликтов в одном
*.custom.php(см. обсуждение в issue).Тип изменений
Связанные Issues
Closes #169
Как это было протестировано?
Проверены только синтаксис PHP и логика при разработке; полное ручное прогонание connector и
api.phpс фрагментами вms3.routes.d— перед мержем.Конфигурация тестирования:
Скриншоты (если применимо)
Изменения затрагивают конфигурацию роутинга и ФС, UI не меняется.
Чеклист
Дополнительные заметки
ms3.services.d/.ms3.routes.d/исполняются как PHP — тот же уровень доверия, что иms3_routes_*.custom.php.