0

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

编码。

路由器.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"

但分页不起作用。

谁能帮我解决这个问题?

谢谢!

4

1 回答 1

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

于 2013-04-17T21:27:41.893 回答