Odeslání formuláře s disabled prvky

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

Dobrý den,
potřebuji vytvořit dynamický formulář, který vždy bude mít alespoň jeden prvek disabled (pokud je v selectu ANO, bude disabled prvek 1, pokud bude v selectu NE, bude disabled prvek 2). Ty prvky, které budou disabled nepotřebuji odesílat.

Bohužel jakmile je alespoň jeden prvek disabled, tak $form->onSuccess[] nefunguje (nebo-li neprovede se).

Jak se toto dá obejít? Není zde možnost např. něco jako onSubmit nebo…?

DĚkuji

JaxP
Člen | 62
+
0
-

Vyřešeno:
Lze odeslat formulář formou: $form->onSubmit[] = array($this, 'nazevSucceded');
Jenom je poté potřeba si dávat pozor u callbacku (‚nazevSucceded‘), který nyní nedostane argumenty ($form, $values) ale pouze ($form) bez values. Values lze následně vytáhnout metodou $form->getValues() a hodnota disabled prvků je NULL.

Editoval JaxP (21. 7. 2016 11:41)

GEpic
Člen | 566
+
+1
-

JaxP napsal(a):

Vyřešeno:
Lze odeslat formulář formou: $form->onSubmit[] = array($this, 'nazevSucceded');
Jenom je poté potřeba si dávat pozor u callbacku (‚nazevSucceded‘), který nyní nedostane argumenty ($form, $values) ale pouze ($form) bez values. Values lze následně vytáhnout metodou $form->getValues() a hodnota disabled prvků je NULL.

Proto tahám values z $form vždy :D

CZechBoY
Člen | 3608
+
0
-

Nejsou ve formulari chyby kdyz k onSuccess udalosti nedojde?

JaxP
Člen | 62
+
0
-

CZechBoY napsal(a):

Nejsou ve formulari chyby kdyz k onSuccess udalosti nedojde?

Formulář pro dané „disabled“ prvky nemá žádné pravidla (tzn. nemusí být vyplněn, nemusí být číslo…), takže formulář nevrací chybu.

Na základě w3 – disabled controls „Disabled controls cannot be successful.“ usuzuji, že Nette poté nebere formulář jako successful.

Pokud je to jinak, tak budu rád za doplnění info :)

CZechBoY
Člen | 3608
+
0
-

To odesilas formular vypnutym tlacitkem nebo jak je mozny mit formular bez chyb, ktery nedojde k onSuccess?
Dumpni si $form->getErrors() po odeslani.

Lizardor
Člen | 35
+
0
-

Registroval jsem podobnou chybu. Například upload nastavím setRequired(FALSE) hodím mu pravidlo ze má brát pouze obrázkové soubory, ale prostě na onSuccess to neprojde a při vypsání chyby na onSubmit to hlásí že soubor není obrázek.

CZechBoY
Člen | 3608
+
0
-

@Lizardor A dáváš tam obrázek nebo necháváš pole prázdné?

Lizardor
Člen | 35
+
0
-

@CZechBoY právě že to nechám prázdné

Myiyk
Člen | 321
+
+2
-

@Lizardor jakou máš verzi nette/forms? 2.4.0 funguje v pořádku

Edit, na verzi 2.3 musíš mít ještě podmínku.

$form->addUpload('image')
	 ->addCondition(Form::FILLED)->addRule(Form::IMAGE)
	 ->setRequired(false);

Editoval Myiyk (25. 7. 2016 23:13)

Lizardor
Člen | 35
+
0
-

@Myiyk Super, díky pomohlo :)