Proc Nette v nekterych pripadech neodesle formular prislusne metode?
- Ashley_cz
- Člen | 11
Dobry den vsem,
mam formular, na ktery mam navesenou zpracovavaci metodu takto:
$form->onSuccess[] = array($this, ‚submitForm‘);
Pokud na vykreslene strance chybi nektera polozka formulare, pri kliknuti na odesilaci tlacitko se zdanlive formular odesle na server, protoze se normalne nahraje nova stranka, ale nedojde k vyvolani metody submitForm. Zajima me, proc se tohle deje, konkretne ktery kousek Nette je zodpovedny za to, aby se zpracovavaci metoda zavolala a proc ji v popsanem pripade nezavola.
Dekuju
- David Matějka
- Moderator | 6445
A nemas tam nejakou validaci, ktera neprojde? (a nezobrazis pak ani error)
- Ashley_cz
- Člen | 11
Je to mozny. Co resim, je zobrazovani nekterych polozek jen pri zakliknuti checkboxu. Zkousel jsem pouzit tohle: https://doc.nette.org/…s/validation, ale nepise se tam nic o tom, jak to udelat, aby se polozky volitelne nejen zobrazovaly, ale i validovaly, tak se to snazim nejak udelat. A potrebuju vedet, kde v kodu mam hledat, co se deje pri stisknuti odesilaciho tlacitka.
- David Matějka
- Moderator | 6445
Pro podminenou validaci taky pouzij addCondition, resp. addConditionOn v kombinaci s addRule, viz doc https://doc.nette.org/cs/forms#…
- Ashley_cz
- Člen | 11
Jeste jednou diky, very helpful, s touhle informaci uz by to mela byt hracka:-). Pouzivam Nette 2.0.8 a to addConditionOn v tyhle verzi asi jeste nebylo, ze? (Upgrade na novejsi verzi v tuto chvili nepripada v uvahu, myslis, ze by stacilo nahradit novejsi verzi soubor Nette\Forms\Rules nebo je to riskantni/slozitejsi?)
- David Matějka
- Moderator | 6445
nahrazovani jednotlivych casti by bylo opravdu riskantni, o to se bez hlubsi znalosti toho kodu nepokousej. A doporucuji updatovat alespon na 2.0.17
- Ashley_cz
- Člen | 11
Hmm, tak to necemu nerozumim. V te dokumentaci, kterou jsi mi nalinkoval, se doporucuje tenhle postup:
$form->addText(„bla“, „Bla“)->addConditionOn(Blabla)->setRequired(Blablabla);
Coz nefunguje, narozdil od
$form->addText(„bla“, „Bla“)->setRequired(Blablabla);
Slovem nefunguje myslim too, ze addConditionOn vrati instanci Nette\Forms\Rules, ne Nette\Forms\Controls\TextInput, a Nette\Forms\Rules nezna metodu setRequired. Co delam spatne?