routování a moduly – všechny moduly v jedné routě

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
t-lama
Člen | 3
+
0
-

Zdravím,

potřeboval bych pomoci s routováním – proč nefunguje tato routa?

$router[] = new Route('//[<module>.]web.<lang cz|sk>/<presenter>/<action>[/<id>]', array(
	'module' => 'Www',
	'presenter' => 'Default',
        'action' => 'default',
        'id' => NULL
 ));

Dokud odkazuji v rámci jednoho modulu, je vše v pořádku, ale jakmile chci odkázat do modulu jiného, je to problém (error: No route for…).

Díky předem za odpovědi :-)

Panda
Člen | 569
+
0
-

Jak zajišťuješ předávání parametru lang? Nemá uvedenou výchozí hodnotu, takže problém může být v tom, že není uvedena jeho hodnota.

t-lama
Člen | 3
+
0
-

Aha, to mě nenapadlo. lang je označen jako perzistentní v BasePresenteru každého modulu.

Upravil jsem odkaz na

<a n:href=":Modul:Default:, $lang">

a fci renderDefault tak, aby přijala parametr lang a funguje to :-)

Neexistuje nějaká lepší cesta, jak udělat parametr perzistentní i mezi moduly?

Panda
Člen | 569
+
0
-

Ta nejčistší: udělat $lang persistentní v BasePresenteru, ze kterého budou dědit BasePresentery každého modulu. Jednoduše řečeno: společný předek všech presenterů ze všech modulů. Nette kontroluje, kde je persistentní parametr definovaný a pokud mají dva presentery společného předka se stejným parametrem, tak se předá.

t-lama
Člen | 3
+
0
-

Super, díky moc