Как сделать параметр необязательным в Zend Framework Router

Я хотел бы знать настройку файла конфигурации .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-адресов


person Nizam    schedule 31.08.2009    source источник


Ответы (2)


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

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-адресе.

person smack0007    schedule 31.08.2009

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.

person Martin Arrua    schedule 12.09.2012