Automatické routování pro neomezenou možnost GET parametrů
- nettolog
- Člen | 68
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
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
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
neprenaseji se vsechny parametry, ale pouze:
- persistentni parametry
- 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
{
...
}