У меня две проблемы с удобными URL-адресами.
У меня роутер настроен следующим образом:
- Фактический URL:
http://www.example.com/course/view-batch/course_id/19
- Мне нужен более удобный URL
http://www.example.com/java-training/19
Я установил следующий маршрут в application.ini
:
resources.router.routes.viewbatchcourse.route = "/:title/:course_id/"
resources.router.routes.viewbatchcourse.defaults.controller = course
resources.router.routes.viewbatchcourse.defaults.action = view-batch
resources.router.routes.viewbatchcourse.reqs.course_id = "\d+"
Это прекрасно работает.
Теперь у меня есть новая страница, содержащая пользовательские обзоры для Java.
- Фактический URL:
http://www.example.com/course/view-reviews/course_id/19
- Мне нужен более удобный URL
http://www.example.com/java-reviews/19
Я понимаю, что это невозможно, потому что один маршрут уже настроен в соответствии с этим форматом.
Итак, я подумал, можно ли использовать регулярное выражение и проверить, содержит ли заголовок «обзоры», а затем использовать этот маршрут.
Я пробовал этот подход, но он не работает. Вместо этого он открывает страницу пакета просмотра:
resources.router.routes.viewreviews.type = "Zend_Controller_Router_Route_Regex"
resources.router.routes.viewreviews.route = "/:title/:course_id"
resources.router.routes.viewreviews.defaults.controller = "course"
resources.router.routes.viewreviews.defaults.action = "view-reviews"
resources.router.routes.viewreviews.reqs.course_id = "\d+"
resources.router.routes.viewreviews.reqs.title = "\breviews\b"
Самое близкое, что у меня есть для работы, это
resources.router.routes.viewreviews.route = "/:title/:course_id"
resources.router.routes.viewreviews.defaults.controller = "course"
resources.router.routes.viewreviews.defaults.action = "view-reviews"
resources.router.routes.viewreviews.reqs.course_id = "\d+"
resources.router.routes.viewreviews.reqs.title = "reviews"
Теперь, если я введу URL http://www.example.com/reviews/19
, будет вызвано действие просмотр-просмотр. Возможно ли - проверить, содержит ли заголовок слово «отзывы» - тогда этот маршрут должен быть вызван?
Возвращаясь к моему предыдущему рабочему маршруту для http://www.example.com/java-training/19
:
resources.router.routes.viewbatchcourse.route = "/:title/:course_id/"
resources.router.routes.viewbatchcourse.defaults.controller = course
resources.router.routes.viewbatchcourse.defaults.action = view-batch
resources.router.routes.viewbatchcourse.reqs.course_id = "\d+"
Число 19
- это идентификатор курса, который мне нужен в действии, чтобы получить данные из базы данных.
Но когда страница отображается, я не хочу, чтобы было видно число 19.
Я просто хочу, чтобы URL был http://www.example.com/java-training
Это возможно?