Маршрутизация в стиле StackOverflow с Zend Framework - PullRequest
1 голос
/ 02 июля 2011

Я создаю сайт вопросов и ответов, такой как StackOverflow, с Zend Framework.Это все готово, кроме необычных URL.URL-адреса должны выглядеть следующим образом:

wwww.site.com/programming/questions/321345/question-title-sanitized-with-dashes

или

www.site.com/photography/questions/45621/photography-site-question

Но мне также нужны домашние страницы сайта, такие как:

www.site.com/programming

Я думаю, что мне нужно использовать цепочку маршрутов, нонекоторая помощь будет хорошей.

1 Ответ

3 голосов
/ 03 июля 2011

Вы можете достичь этого довольно легко, используя пользовательские маршруты. Поскольку вы ничего не указали о том, как вы структурировали свой код, я собираюсь сделать следующие предположения:

  • На вашем сайте есть "разделы", такие как фотография и программирование, которые определяются по параметру
  • У вас есть один контроллер, который обрабатывает вопросы для всех разделов, но выбирает все на основе параметров

Во-первых, для случая домашней страницы:

Маршрут :section и укажите значения по умолчанию для модуля, контроллера и действия, которые обрабатывают домашние страницы вашего раздела.

Во-вторых, для вопроса:

Маршрут :section/questions/:id/:title и снова укажите значения по умолчанию для модуля, контроллера и действия, которое обрабатывает конкретные вопросы. Вы также можете определить заголовок по умолчанию как пустой, потому что вопрос уже можно найти только на основе идентификатора.

Затем в своих контроллерах вы можете просто использовать что-то вроде $this->_getParam('section'), чтобы определить, какой раздел следует использовать, и т. Д.

Если вы не знаете, как создать эти маршруты, я предлагаю вам изучить руководство для Zend_Controller_Router и руководство для ресурсов Zend_Application , чтобы узнать, как определить маршруты в вашем application.ini

...