Специфичные для модуля маршруты в Zend Framework без указания имени модуля в маршруте

Мне нужно создать некоторые специфичные для модуля маршруты, но без явного упоминания имени модуля в маршруте. Прямо сейчас у меня есть отдельный файл конфигурации для каждого модуля (MODULE/configs/module.ini), и в начальной загрузке модуля я проталкиваю эти маршруты в Zend Framework. Файл INI содержит информацию о маршрутах, но в нем упоминается имя модуля в маршруте. например

rout.contents.route = "Contents /(.*)"
rout.contents.defaults.module = Содержание
rout.contents.defaults.controller = index
rout.contents.defaults.action = index
+ другие детали относительно маршрута.

Вы можете видеть, что имя модуля ("Содержание") явно упоминается в маршруте. Я хочу, чтобы в маршрутах я просто упоминал часть после имени модуля, и он автоматически добавлял имя модуля перед маршрутом. Поэтому позже, если я переименую модуль, скажем, в CMS, я не буду менять каждый маршрут на "CMS/xxxx".

1 ответ

Указанный вами "маршрут" может быть любым. Если Zend Framework соответствует ему, он выполнит маршрут на основе значений по умолчанию, указанных ниже.

resources.router.routes.products.regex = "somethingawesome/(.*)"
resources.router.routes.products.defaults.module = "ModuleName"
resources.router.routes.products.defaults.controller = "awesome"
resources.router.routes.products.defaults.action = "cool"

Приведенный выше "маршрут" использует совпадение с регулярным выражением для - mysite.com/somethingawesome/whothing и направляет его в модуль: ModuleName, контроллер AwesomeController.php и запускает coolAction()

Есть много других совпадений, которые вы можете выполнить в этом регулярном выражении, но строка "что-то удивительное" полностью зависит от вас. Это все о том, что вы хотите сопоставить в URL и куда вы хотите отправить его.

Другие вопросы по тегам