NRoute – Povinne parametry v query_stringu + generovani

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

Ahoj,

lze v masce routeru pouzit krome domeny/uri take query_string? Tj. neco jako

$router[] = new NRoute('/', array(
	'presenter' => 'Homepage',
	'action' => 'default',
));

$router[] = new NRoute('/ ? show=catalog', array(
	'presenter' => 'Homepage',
	'action' => 'catalog',
));

Myslim tim aby se routa neprepinala uri, ale query_stringem? Zaroven aby to ten query_string generovalo pri sestavovani url?

$presenter->link('catalog'); // => /?show=catalog

Zatim jsem si s tim delsi dobu hral a nepodarilo se mi router prinutit query_string vygenerovat, aniz bych mu ho predal jako parametr. Jedine ceho jsem v routeru doculil je jeho prejmenovani.

$router[] = new NRoute('/ ? renamed-show=<show>', array(
	'presenter' => 'Homepage',
	'action' => 'catalog',
));

Zaroven tedy neni query_string rozlisovany pri match routeru ? Pravdepodobne z bezpecnostnich duvodu ?

David Grudl
Nette Core | 8173
+
0
-

Myslíš tohle?

$router[] = new NRoute('/ ? show=<action>', array(
        'presenter' => 'Homepage',
        'action' => 'catalog',
));
souki
Bronze Partner | 22
+
0
-

Řeším podobný problém.

Chtěl bych homepage obsluhovat Homepage presenterem, ale adresy typu /?q=.* bych rád předával jinému presenteru. Ať zkouším co zkouším, tak se mi vždy použije routa, která je zapsaná jako první.

Takhle vypadá můj nefungující kód:

$router[] = new Route('/ ? q=<q .+?>', array(
	'presenter' => 'Search',
	'action' => 'default'
));

$router[] = new Route('/ ', array(
	'presenter' => 'Homepage',
	'action' => 'default'
));