2010-06-24 82 views
1

这是我的路由是怎么样子:Zend_Controller_Router_Route_Regex反向路线没有翻译

acc_long.type = Zend_Controller_Router_Route_Regex 
acc_long.route = "@accommodation/([A-Za-z-]+)/([0-9A-Za-z-]+)-([0-9]+)" 
acc_long.map.1 = 'location' 
acc_long.map.2 = 'name' 
acc_long.map.3 = 'id' 
acc_long.defaults.controller = "accommodation" 
acc_long.defaults.action  = "index" 
acc_long.defaults.module  = "default" 
acc_long.defaults.location  = 'FALSE' 
acc_long.defaults.name   = 'FALSE' 
acc_long.defaults.id   = 'FALSE' 
acc_long.reverse = "@accommodation/%s/%s-%d/" 

但Zend的路由器不会把它翻译成特定语言,德国为例。 我有所有的翻译可用,并且路线的翻译在除正则表达式路线之外的所有路线中工作正常?

有什么办法可以翻译它吗?

非常感谢!

回答

3

的solutiuon是使用链接,所以 路线的“静态”部分是一个单独的路由。

例如

language.type = Zend_Controller_Router_Route 
language.route = ":lang/" 
language.reqs.lang = "(en|de)" 
language.defaults.lang = "de" 
language.defaults.controller = "index" 
language.defaults.module = "default" 
language.defaults.action = "index" 

acc_long.type = Zend_Controller_Router_Route_Regex 
acc_long.route = "([A-Za-z-]+)/([0-9A-Za-z-]+)-([0-9]+)" 
acc_long.map.1 = 'location' 
acc_long.map.2 = 'name' 
acc_long.map.3 = 'id' 
acc_long.defaults.action  = "index" 
acc_long.defaults.location  = 'FALSE' 
acc_long.defaults.name   = 'FALSE' 
acc_long.defaults.id   = 'FALSE' 
acc_long.reverse = "%s/%s-%d/" 

acc.type = Zend_Controller_Router_Route 
acc.route = "@accommodation" 
acc.defaults.controller = "accommodation" 
acc.defaults.action  = "index" 
acc.defaults.module  = "default" 

acc_long_chain.type = Zend_Controller_Router_Route_Chain 
acc_long_chain.chain = "language, acc, acc_long" 

它就像一个魅力!