Zend路由器:将一个url列表组合成一个或一个列表

时间:2013-03-25 17:28:47

标签: zend-framework zend-router

我有几个网址:

  • / dave
  • / davina
  • / dave / chris
  • /达维娜/彼得

我的路线中有所有这些条目,例如:

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)"

我现在要用这个来满足我的要求,但我会保持开放(至少一天)让任何人提供建议。主要问题是两个列表都会增长,这最终会导致问题。

1 个答案:

答案 0 :(得分:1)

我想我可能会对此有所了解。

在ZF中,路由以反向顺序匹配。所以最后定义的路由是第一个匹配的。

在这种情况下,您应该定义/:person/:personname路由,然后定义其他静态路由,例如关于页面,联系页面等。

如果我正确理解Zend,它应该可行。这样做很清楚:

url=/about
match route "/about"

url=/david/parker
match route "/:person/:personname"
not "/about" or "/contact"