Как сделать параметр необязательным в Zend Framework Router - PullRequest
3 голосов
/ 31 августа 2009

Хотелось бы узнать настройку файла конфигурации .ini для создания маршрута, в котором параметр номера страницы является необязательным, чтобы

http://news.mysite.com/national
http://news.mysite.com/national/1

указывают на ту же страницу.

У меня есть следующий код

resources.router.routes.news_list.type = "Zend_Controller_Router_Route_Regex"
resources.router.routes.news_list.route = "([a-zA-Z0-9\-]+)/([0-9\-]+)"
resources.router.routes.news_list.defaults.module = "news"
resources.router.routes.news_list.defaults.controller = "index"
resources.router.routes.news_list.defaults.action = "category"
resources.router.routes.news_list.defaults.page = 1
resources.router.routes.news_list.map.1 = "categ"
resources.router.routes.news_list.map.2 = "page"
resources.router.routes.news_list.reverse = "%s/%s"

Может ли кто-нибудь мне помочь с решением изменить этот код, чтобы он работал для обоих URL

Ответы [ 2 ]

7 голосов
/ 31 августа 2009

Вы можете сделать это без маршрута регулярного выражения, используя:

routes.news_list.route = ":action/:page"
routes.news_list.defaults.module = "news"
routes.news_list.defaults.controller = "index"
routes.news_list.defaults.action = "category"
routes.news_list.defaults.page = 1

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

3 голосов
/ 12 сентября 2012
resources.router.routes.news_list.type = "Zend_Controller_Router_Route_Regex"
resources.router.routes.news_list.route = "([a-zA-Z0-9-]+)/?([0-9]+)?"
resources.router.routes.news_list.defaults.module = "news"
resources.router.routes.news_list.defaults.controller = "index"
resources.router.routes.news_list.defaults.action = "category"
resources.router.routes.news_list.defaults.page = 1
resources.router.routes.news_list.map.1 = "categ"
resources.router.routes.news_list.map.2 = "page"
resources.router.routes.news_list.reverse = "%s/%d"

Нечто подобное может работать и в случае, если вам нужно использовать Regex.

...