Automatické routování pro neomezenou možnost GET parametrů

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

Ahoj, neexistuje nějaký globální způsob jak povolit pro všechny routy neomezenou možnost použití get parametrů? Problém je v tom, že nechci manuálně ke všem routám doplňovat případnou možnost GET parametrů. A odkaz s GET parametrem generuji na každé stránce v layoutu. Používám standardně RouteList.

Například u této routy nemusím nic řešit, což je ideální.

$router[] = new Route('', 'Homepage:default');

Ale není mi jasné, jak to, že to v této routě funguje. Je prázdná a přesto tento požadavek projde bez problému:

<a href="{plink this, neco => neco}">

Skutečně se vygeneruje to, co chci, tedy http://example.com/?neco=neco

Zatímco pokud chci ten samý odkaz v této routě:

$router[] = new Route('hledat/<search>', 'Hledat:default');

Napíše mi to chybu Invalid link: No route for Hledat:default(neco=neco)

Zkrátka jde mi o to, aby se při neexistenci parametru v routě vytvořil get parametr. Setkali jste se s tím někdo? A jak to řešíte? A proč to v prázdné routě funguje jinak, než v routě, kde je nějaký statický parametr typu hledat viz. můj případ?

Editoval nettolog (5. 7. 2015 23:49)

David Matějka
Moderator | 6445
+
0
-

v te route mas totiz parametr search, ktery si nevyplnil. Pokud ma byt volitelny, musis ho tak oznacit: https://doc.nette.org/…tion/routing#…

nettolog
Člen | 68
+
0
-

Ten parametr search je právě vyplněný – jsem na stránce http://example.com/hledat/hledamte a dostávám tam tuto chybu, protože mi layout generuje tento odkaz: <a href="{plink this, neco => neco}">.

Editoval nettolog (6. 7. 2015 0:00)

nettolog
Člen | 68
+
0
-

Promiň, asi jsi myslel, že chybí parametr při generování toho odkazu. To mi nedošlo, vyzkouším to s ním. Měl jsem za to, že se přenese automaticky díky $this. Alespoň tak to funguje u routy, kde je jen <param>, takže třeba http://example.com/cokoli (poslední routa v seznamu).

David Matějka
Moderator | 6445
+
+2
-

neprenaseji se vsechny parametry, ale pouze:

  1. persistentni parametry
  2. a v pripade this parametry, ktere jsou uvedeny v parametrech odpovidajici action, respektive render metody. V tvem pripade tedy uved:
public function actionDefault($search) //pripadne renderDefault
{
	...
}