Proc Nette v nekterych pripadech neodesle formular prislusne metode?

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

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
+
0
-

A nemas tam nejakou validaci, ktera neprojde? (a nezobrazis pak ani error)

Ashley_cz
Člen | 11
+
0
-

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
+
0
-

Pro podminenou validaci taky pouzij addCondition, resp. addConditionOn v kombinaci s addRule, viz doc https://doc.nette.org/cs/forms#…

Ashley_cz
Člen | 11
+
0
-

Moc diky, zkusim to. Ale stejne by me porad zajimalo, co se teda pri tom stisknuti tlacitka Submit deje:-).

David Matějka
Moderator | 6445
+
0
-
Ashley_cz
Člen | 11
+
0
-

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
+
0
-

bylo

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
+
0
-

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?

David Matějka
Moderator | 6445
+
0
-

V 2.0 pouzij

->addConditionOn(...)
->addRule(Form::FILLED, ....)
Ashley_cz
Člen | 11
+
0
-

Huraa! Tohle funguje. Moc jsi mi pomohl, Mateji, doufam, ze se mas dobre, a preju Ti, aby to bylo cim dal lepsi:-).