Routování do cizího jazyka negeneruje správnou URL

netteAmater
Člen | 9
+
0
-

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 | 762
+
0
-

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
+
0
-

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
+
0
-

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.