vícejazyčné URL a přepínání mezi mutacemi
- Rob Bob
- Člen | 60
Zdravím, na překlad jednotlivých částí URL používám callbacky v podobě filterIn a filterOut metod, kde se na základě jazyka v url použije překladová tabulka, takže např. URL „/cs/podpora/platby/“ se v pořádku převede na presenter a akci „Support:payment“ a naopak při generování odkazu. Když ručně hodím adresu „/en/support/payment/“, tak rovněž. Do téhle chvíle se zdá vše v pořádku, nevím teď ale jak správně vygenerovat odkaz směřující do jiné jazykové mutace tak, abych zachoval současně navšívenou stránku, tj. například aby
<a n:href="this, 'lang' => 'en'">EN</a>
vygeneroval /en/support/payment/. V dané chvíli jsem totiž na české mutaci a vygeneruje se (pochopitelně) „/en/podpora/platby“, což už se po kliknutí špatně přeloží (v url je jazyk en, ale nesedí název presenteru a akce do překladové tabulky). Jdu na to od základu špatně? Jak docílit jednoduše kýženého chování, aniž bych psal vlastní router nebo dopisovat dodatečné překladové tabulky?
Editoval Rob Bob (3. 6. 2015 13:08)
- Rob Bob
- Člen | 60
Router: http://pastebin.com/iHDiLtWC
UrlFilter: http://pastebin.com/ghFAFeQ5
Vím proč se to generuje, tak jak se to generuje, ale nevím jak ve xxxFilterOut získat lang z generovaného odkazu.
- newPOPE
- Člen | 648
Skus to takto a uvidis co ti tam pripluje ako parametre :):
$router[] = new Route('[<lang [a-z]{2}>/]<presenter>/<action>/<id>[-<title>]', [
'lang' => $defaultLanguage,
'module' => 'Frontend',
'id' => null,
'title' => null,
null => [
Router::FILTER_OUT => function($params) {/* tu by si mal mat vsetky parametre z app requestu */}
]
]);