我说英语不太好,很抱歉。
代码。
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"
但是分页不起作用。
有人可以帮我解决这个问题吗?
谢谢!
答案 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