2013-03-25 35 views
0

我有幾個網址:的Zend路由器:URL列表組合成一個單一的或列表

  • /戴夫
  • /達維娜
  • /戴維/克里斯
  • /達維娜/彼得

我有我的路線中所有人的條目,這樣的一個例子是:

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 

我想你可以馬上看到我有重複問題。有沒有將多個網址組合成一條路線的方法?

我玩過使用/:人,但我也有其他內容,但不會去人控制器。

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這樣的網址顯然正被上面的表達式所殺。

我可以以列表的形式表達要求嗎? 「dave | davina | etc」或者是否有另一種神奇的zend方法呢?

UPDATE: 我打得周圍,跨越這部分解決方案來:

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

我想我可能會有這樣的感覺。

在ZF中,路線按相反順序匹配。所以最後定義的路線是第一個匹配的路線。

在這種情況下,你應該定義你的/:person/:personname路線,然後定義和其他人一樣對網頁,聯繫人頁面等

如果我理解正確的Zend的,它應該工作靜態路由。這是明確的:

url=/about 
match route "/about" 

url=/david/parker 
match route "/:person/:personname" 
not "/about" or "/contact" 
相關問題