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

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

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


person Sinisa Valentic    schedule 24.06.2010    source источник


Ответы (2)


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

Например

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"

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

person Sinisa Valentic    schedule 26.06.2010

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

Zend_Controller_Router_Route::setDefaultTranslator($translator);

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

person Ashley    schedule 24.06.2010