我有几个网址:
我的路线中有所有这些条目,例如:
routes.dave.route = /dave
routes.dave.defaults.module = default
routes.dave.defaults.controller = person
routes.rcp.defaults.action = index
routes.davina.route = /dave/chris
routes.davina.defaults.module = default
routes.davina.defaults.controller = person
routes.davina.defaults.action = index
我认为您可以立即看到我有重复问题。有没有办法将多个网址组合成一条路线?
我玩过使用/:person,但我也有其他内容,也没有人控制器。
routes.person.route = /:personname
routes.person.defaults.module = default
routes.person.defaults.controller = person
routes.person.defaults.action = index
routes.person.reqs.personname = "^[a-zA-Z0-9]+$"
上传到搜索控制器的/ search?person = dave等网址显然被上面的表达式杀死了。
我可以将要求列为清单吗? "戴夫|达维娜|等"还是有另一种神奇的方法吗?
更新 我一直在玩,并遇到了这个部分解决方案:
routes.person.route = /:personname
routes.person.defaults.module = default
routes.person.defaults.controller = person
routes.person.defaults.action = index
routes.person.reqs.personname = "(dave|davina)"
routes.person.route = /:person/:personname
routes.person.defaults.module = default
routes.person.defaults.controller = person
routes.person.defaults.action = index
routes.person.reqs.personname = "(chris|peter)"
我现在要用这个来满足我的要求,但我会保持开放(至少一天)让任何人提供建议。主要问题是两个列表都会增长,这最终会导致问题。
答案 0 :(得分:1)
我想我可能会对此有所了解。
在ZF中,路由以反向顺序匹配。所以最后定义的路由是第一个匹配的。
在这种情况下,您应该定义/:person/:personname
路由,然后定义其他静态路由,例如关于页面,联系页面等。
如果我正确理解Zend,它应该可行。这样做很清楚:
url=/about
match route "/about"
url=/david/parker
match route "/:person/:personname"
not "/about" or "/contact"