Obrácené chování routy pro lokalizaci
- Marek Znojil
- Člen | 90
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 | 90
F.Vesely napsal(a):
Proc bys to ocekaval?
en
je uvedeno jako defaultni hodnota pro parametrlocale
. To znamena, ze pokud neni uvedeno zadnelocale
v 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 | 90
F.Vesely napsal(a):
Ale generuje neznamena presmeruje.
Presmerovava te Presenter v metode
canonicalize
, coz se dela automaticky, pokud mas nastaveno v presenteruautoCanonicalize
natrue
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.