Zend_Controller_Router_Route_Regex和分页问题

时间:2013-04-17 16:48:25

标签: php zend-framework pagination

我说英语不太好,很抱歉。

代码。

routers.ini:

routes.cat1.type = "Zend_Controller_Router_Route_Regex"
routes.cat1.route = "showcat/(\d+)-(\d+)"
routes.cat1.defaults.module = "default"
routes.cat1.defaults.controller = "category"
routes.cat1.defaults.action = "viewcategory"
routes.cat1.map.1 = "id1"
routes.cat1.map.2 = "page"
routes.cat1.reverse = "showcat/%d-%d"

当我访问时:

showcat/6

它返回错误:指定的控制器无效(showcat)

但是当我访问时:

showcat/6-1

工作正常。

当我添加以下路由器来修复上述问题时:

routes.cat2.type = "Zend_Controller_Router_Route_Regex"
routes.cat2.route = "showcat/(\d+)"
routes.cat2.defaults.module = "default"
routes.cat2.defaults.controller = "category"
routes.cat2.defaults.action = "viewcategory"
routes.cat2.map.1 = "id1"
routes.cat2.reverse = "showcat/%d"

但是分页不起作用。

有人可以帮我解决这个问题吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

首先,我会使用正斜杠而不是破折号:

routes.cat2.route = "showcat/(\d+)/(\d+)"

但是,在任何一种情况下,你都是正则表达式需要知道第二个语句是否不存在,所以:

routes.cat2.route = "showcat/(\d+)(?:/(\d+))?"

或者,用短划线:

routes.cat2.route = "showcat/(\d+)(?:-(\d+))?"

注意问号 - 表明该项目是否在那里。

请记住为路线中的第二个参数设置默认值:

routes.cat2.route.defaults.2 = 1