如何在Zend Framework Router中使参数可选

时间:2009-08-31 05:14:17

标签: regex 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"

可以帮助我解决修改此代码的问题,使其适用于两个网址

2 个答案:

答案 0 :(得分:7)

您可以使用以下方法在没有正则表达式路由的情况下执行此操作:

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中是可变的。

答案 1 :(得分:3)

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"

如果您需要使用正则表达式,这样的事情也可以起作用。