Obrácené chování routy pro lokalizaci

- Marek Znojil
- Člen | 92
Ahoj,
při routě:
$router->addRoute('[!<locale=en cs|en>][/<presenter>[/<action>]]', 'Homepage:default');
bych očekával, že po zadání url example.com se přesměruje na example.com/en, ale bohužel se tomu tak nestane, nevíte prosím proč?
Díky,
M.

- Marek Znojil
- Člen | 92
F.Vesely napsal(a):
Proc bys to ocekaval?
enje uvedeno jako defaultni hodnota pro parametrlocale. To znamena, ze pokud neni uvedeno zadnelocalev url, tak se nastavi naen.
Očekávám to proto, že dle dokumentace zadáním ! se převrátí chování. Tedy, že akceptuje example.com i example.com/en, ale při nevyplnění lokalizace v url se přesměruje na tu verzi s vyplněnou.
https://doc.nette.org/…tion/routing#…
// akceptuje /hello i /hello.html, generuje /hello
$router->addRoute('<name>[.html]');
// akceptuje /hello i /hello.html, generuje /hello.html
$router->addRoute('<name>[!.html]');

- Marek Znojil
- Člen | 92
F.Vesely napsal(a):
Ale generuje neznamena presmeruje.
Presmerovava te Presenter v metode
canonicalize, coz se dela automaticky, pokud mas nastaveno v presenteruautoCanonicalizenatrue
Umm, sem se neuvědomil, díky za tvůj čas vyřešeno:
$this->canonicalize('this', ['locale' => $this->locale]);
umístěním do výchozí akce domovské stránky.