Я определил некоторые маршруты в routes.ini файла для простого Q & приложения:Zend Framework 1: Конфликт с моими маршрутами (routes.ini)
; e.g. /5/slug-of-the-title
routes.show_question.route = ":id/:slug"
routes.show_question.defaults.controller = "questions"
routes.show_question.defaults.action = "get"
routes.show_question.defaults.slug = null
; e.g. /ask
routes.ask.route = "ask"
routes.ask.defaults.controller = "questions"
routes.ask.defaults.action = "new"
; .. below this, similar route patterns e.g. "register", "login", etc
Сейчас это работает, я могу получить доступ следующие пути моего приложения:
/5/slug-of-the-title
/5
/ask
/register
/login
Однако, это работает только, если «: идентификатор /: СЛИЗЕНЬ» объявлен в верхней части. В противном случае я получаю сообщение об ошибке «id не указан». Я думал, что дно будет иметь смысл, так как другие маршруты не совпадают (/ 5 не соответствует «спросить»), но, похоже, верхнее значение получилось. Почему это?
Кроме того, маршруты, которые ранее работали, такие как/account (которые по умолчанию были для контроллера учетной записи и действия индекса) больше не работают. Должен ли я объявлять все предыдущие маршруты по умолчанию? Я надеялся просто объявить исключительные маршруты и оставить остальных по умолчанию (: controller /: action).
Кстати, я пытаюсь объявить «поймать всех» маршрут:
; catch all
routes.ask.route = ":controller/:action"
routes.ask.defaults.controller = "index"
routes.ask.defaults.action = "index"
Я думал, что логическое место, чтобы объявить это будет дно снова. Мое понимание заключалось в том, что Zend попытается сопоставить маршруты в сценарии, а когда ни один не будет соответствовать, это будет маршрут по умолчанию. Но, неважно, где я его положил - сверху, снизу, после «: id /: slug» по крайней мере одна страница даст мне ошибку «id is not defined». Может ли кто-нибудь объяснить, где я ошибаюсь? Спасибо