Обратный маршрут Zend_Controller_Router_Route_Regex не переведен - PullRequest
1 голос
/ 24 июня 2010

Вот так выглядит мой маршрут:

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 Router не переводит его на определенный язык, например на немецкий.У меня есть все доступные переводы, и перевод маршрутов работает нормально на всех маршрутах, кроме маршрута Regex?

Есть ли способ перевести это также?

Большое спасибо!

Ответы [ 2 ]

3 голосов
/ 26 июня 2010

Решением является использование цепочки, поэтому «статическая» часть маршрута - это отдельный маршрут.

например

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"

И это работает как шарм!

0 голосов
/ 24 июня 2010

Вы пробовали установить переводчик по умолчанию?

Zend_Controller_Router_Route :: setDefaultTranslator ($ США);

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

...