když zadám default id, tak se famework přesměruje
- pavouk
- Člen | 12
Zdravím, moc to nechápu. Stáhnul jsem si Nette + sendbox a jediné co jsem udělal je přidal toto do homepagePresenteru
public function actionDefault($id = 5)
{
}
jednoduše jsem přidal výchozí hodnotu pro action default. Což mi přijde
logické (je to id pro domovskou stranku v databazi). Ale kdyz spustim aplikaci
tak se automaticky presmeruje na domena.cz/homepage/default/0
coz vubec nechapu proc se deje. Vysvetli mi to nekdo?
- pavouk
- Člen | 12
No tak já jsem to nakonec vytvořil poměrně snadno že tu výchozí hodnotu nastavuji uvnitř actionDefault, ale celkem mě to přijde divné chování a hlavně jsem pěkně dlouho hledal kde jsem zapoměl nějaký redirect dokud jsem na to nepřišel, protoře tohle by mě nenapadlo… Takže můj dotaz byl spíš proč se to děje než jak to mám vyřešit…
- Šaman
- Člen | 2666
Doufám, že neplácám kraviny, když podám tohle vysvětlení (hledat to
ve zdrojácích teď nemám čas):
Pokud v zadáš parametr u akce nebo pohledu, tak se Nette pokusí tento
parametr získat a předat ho. Tím se například zajistí, že po
přesměrování bude tento parametr v adrese aniž ho tam musíš přidávat
ručně. No a tys chtěl, aby Nette dodalo parametr id
. (To, že
má být defaultně 5 by se projevilo až kdyby nebyl předán.) Ale Nette
zjistí, že defaultní parametr v routě není zadán a dosadí nulu, tu pak
předá jako parametr do metody actionDefault(0)
a tím pádem ta
pětka už nikoho nezajímá.
Správné řešení je to, které psal gmvasek. Defaultní hodnotu si definuj v routě a tu akci zapiš takto:
public function actionDefault($id)
{
}