Routování do cizího jazyka negeneruje správnou URL
- netteAmater
- Člen | 9
Zdravím,
mám takový dotaz ohledně routování do cizích jazyků.
Mám routy pro cz a com doménu zvlášť:
$historie = new RouteList('Historie');
$historie[] = new Route('//'.self::DOMAIN_CZ.'/historie/<presenter>/<param1>/<param2>', ['domain' => self::DOMAIN_CZ, 'presenter' => 'Zapas', 'action' => 'zapasy'] + $filter);
$historie[] = new Route('//'.self::DOMAIN_COM.'/history/<presenter>/<param1>/<param2>', ['domain' => self::DOMAIN_COM, 'presenter' => 'Zapasy', 'action' => 'zapasy'] + $filter);
Adresa v požadovaném tvaru se mi vrátí jen u prvního případu. Na com doméně mi to projde v routeru dolů k jiné routě. Zajímalo by mě, jestli na to nemůže mít nějaký vliv, třeba to, že si ve filter_out přeložím název presenteru. Myslel jsem, že když se změní jen doména, tak by odkazování mělo vytvořit url ve stejném tvaru. Uvedený příklad by ještě šlo asi zjednodušit přidáním <module> místo historie, ale zatím to mám takto.
Filtry řeším jako pole, co pak přidám do routy
$filter = [NULL => [
Route::FILTER_IN => function (array $params) {
if ($params['domain'] === self::DOMAIN_CZ) {
...
} elseif ($params['domain'] === self::DOMAIN_COM) {
...
$params['presenter'] = array_key_exists($params['presenter'], self::PREKLAD_EN_CZ_2) ? self::PREKLAD_EN_CZ_2[$params['presenter']] : $params['presenter'];
$params['action'] = array_key_exists($params['action'], self::PREKLAD_EN_CZ) ? self::PREKLAD_EN_CZ[$params['action']] : $params['action'];
...
} else {
return NULL;
}
return $params;
},
Route::FILTER_OUT => function (array $params) {
if ($params['jazyk'] == Model\Prekladac::JAZYK_CZ) {
...
}
elseif ($params['jazyk'] == Model\Prekladac::JAZYK_EN) {
...
$params['presenter'] = array_key_exists($params['presenter'], self::PREKLAD_CZ_EN_2) ? self::PREKLAD_CZ_EN_2[$params['presenter']] : $params['presenter'];
$params['action'] = array_key_exists($params['action'], self::PREKLAD_CZ_EN) ? self::PREKLAD_CZ_EN[$params['action']] : $params['action'];
...
}
return $params;
},
],
];
- Kamil Valenta
- Člen | 815
A jak vytváříš odkazy? Dodáváš plinku parametr domain? Nebo je perzistentní? Tipuji, že mu žádná hodnota nepřichází a DOMAIN_CZ máš jako default…
- netteAmater
- Člen | 9
Odkaz vytvářím v šabloně jako: n:href=„:Historie:Zapasy:zapasy param1 ⇒ $zapas[‚domaci_nazev_url‘], param2 ⇒ $zapas[‚hoste_nazev_url‘]“.
Možná už jsem řešení na cestě. Vypadá to, že problém souvisí s tím, že v presenteru zapasy mám action zapasy a oboje překládám na matches a nějak se to bije.
- netteAmater
- Člen | 9
Nakonec jsem si asi nějak poradil. Sice routování pořád moc neovládám, ale poradil jsem si i tím, že jsem si udělal více verzí filtru a ne jeden úplně univerzální pro všechny routy.