简体   繁体   English

Zend_Controller_Router_Route_Regex反向路由未转换

[英]Zend_Controller_Router_Route_Regex reverse route not translated

This is how my route looks like: 这是我的路线:

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

But zend router doesn't translate it into a specific language, to german for example. 但是zend router不会将其翻译成特定的语言,例如德语。 I have all the translations available, and translation of routes is working fine in all routes except for Regex route? 我拥有所有可用的翻译,并且除Regex路由外,其他所有路由的路由都可以正常工作?

Is there any way to translate it also? 有什么办法翻译吗?

Thank you very much! 非常感谢你!

The solutiuon is to use chaining, so the "static" part of the route is a separate route. 解决方案是使用链接,因此路由的“静态”部分是单独的路由。

for example 例如

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"

And it works like a charm! 它就像一个魅力!

Have you tried setting the default translator? 您是否尝试过设置默认翻译器?

Zend_Controller_Router_Route::setDefaultTranslator($translator); Zend_Controller_Router_Route中:: setDefaultTranslator($译者);

http://framework.zend.com/manual/en/zend.controller.router.html#zend.controller.router.routes.standard.translated-segments http://framework.zend.com/manual/en/zend.controller.router.html#zend.controller.router.routes.standard.translated-segments

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM