Obrácené chování routy pro lokalizaci

Marek Znojil
Člen | 76
+
0
-

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.

F.Vesely
Člen | 368
+
0
-

Proc bys to ocekaval? en je uvedeno jako defaultni hodnota pro parametr locale. To znamena, ze pokud neni uvedeno zadne locale v url, tak se nastavi na en.

Marek Znojil
Člen | 76
+
0
-

F.Vesely napsal(a):

Proc bys to ocekaval? en je uvedeno jako defaultni hodnota pro parametr locale. To znamena, ze pokud neni uvedeno zadne locale v url, tak se nastavi na en.

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]');
F.Vesely
Člen | 368
+
+1
-

Ale generuje neznamena presmeruje.

Presmerovava te Presenter v metode canonicalize, coz se dela automaticky, pokud mas nastaveno v presenteru autoCanonicalize na true

Editoval F.Vesely (20. 7. 2020 11:41)

Marek Znojil
Člen | 76
+
+1
-

F.Vesely napsal(a):

Ale generuje neznamena presmeruje.

Presmerovava te Presenter v metode canonicalize, coz se dela automaticky, pokud mas nastaveno v presenteru autoCanonicalize na true

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.