2010-06-24 84 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" 

它就像一個魅力!