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


Я хотел бы знать .ini config file setup для создания маршрута, в котором параметр номер страницы является необязательным, так что

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"

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

2 3

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

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"

Что-то вроде этого тоже может сработать, если вам нужно использовать регулярное выражение.