Nefungujicí locale resolvers

crassus
Backer | 75
+
0
-

Ahoj,

posílám v hlavičce „Accept-Language“ hodnotu „en“ v requestu na domain.cz/customer.

Rád bych docílil přesměrování na domain.cz/customer/en, místo toho ale pořád končím na domain.cz/customer/cs.

Viz screen

Jak je to možné když mám povolený jenom AcceptHeaderResolver, který ještě k tomu správně vybral jazyk en?

RouterFactory.php

		$router[] = new Route(CUSTOMER_ID . '/[!<locale=cs>/]', [
    'presenter' => 'Front',
    'action' => 'default',
    'locale' => [
        Route::FILTER_TABLE => [
            "cs" => "cs",
            "en" => "en"
        ]
    ]
]);

Asi bude chyba v routeru. Jak mu mám říct, aby se řídil tím co vrací locale resolution? Používám translator: https://github.com/…/Translation

Děkuji moc všem za radu :)

Editoval crassus (4. 11. 2018 19:26)

MajklNajt
Člen | 471
+
0
-

ahoj, podľa mňa AcceptHeaderResolver nemá nič spoločné s routami, presmerovanie bude teda zrejme nutné vyriešiť až na úrovni presenteru

crassus
Backer | 75
+
+1
-

MajklNajt napsal(a):

ahoj, podľa mňa AcceptHeaderResolver nemá nič spoločné s routami, presmerovanie bude teda zrejme nutné vyriešiť až na úrovni presenteru

Ahoj,
děkuji moc za radu. Přesměrování jsem nakonec vyřešil na úrovni presenteru takto:

	public function startup()
{
    parent::startup();

    if(is_null($this->locale))
    {
        $locale = $this->acceptHeaderResolver->resolve($this->translator) ?? 'en';
        $this->redirect('this', ['locale' => $locale]);
    }
}