У меня есть две проблемы с удобными URL-адресами.Zend Framework - настройка удобных 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
Возможно ли это?
Hey Jeremy - жесткое кодирование - это не вариант, потому что «java-review» предназначен для одного курса java. Будет еще 10 других страниц для других курсов, таких как «php-review» - «python-reviews» и т. Д. - так что почему я искал регулярное выражение, которое просто ищет слова в URL-адресе - Спасибо – Gublooo
Ваш вариант по-прежнему жесткое кодирование - но вы просто жестко кодируете конец. 'route = /: title-reviews /: course_id' и' route = /: title-training /: course_id'. –