Formuláře a ->setDisabled(). Každý prvek se chová jinak

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

Toto chování mě dost udivuje:

Mám toto nastavení v presenteru (podle role potřebuji některé věci vypnou):

$this['mujForm']['input']->setDisabled();
$this['mujForm']['select']->setDisabled();
$this['mujForm']['checkbox']->setDisabled();

Ve zpracování to dopadne takto:

$this['mujForm']['input'] // V $form->getValues() vůbec není
$this['mujForm']['select'] // V $form->getValues() vůbec není
$this['mujForm']['checkbox'] // V $form->getValues() to vždy vrátí FALSE

Dost mě zaráží, proč se chcekbox předá, ale ostatní ne? Totiž, tohle skvělé chování przní data!!!
Nette 2.0.13.

Editoval martinit (28. 11. 2013 17:22)

David Grudl
Nette Core | 8233
+
0
-

Já teda disabled checkbox v getValues() nevidím.

MartinitCZ
Člen | 580
+
0
-

@**David Grudl**: Problém je v tom, že checkbox, narozdíl od inputů, ->setDisabled() v render<> ovlivní jen na půl.
Checkbox je po vykreslení „vypnutý“, ale předá se.

A ano vím, že by se toto mělo dělat v action :)

Editoval martinit (28. 11. 2013 22:16)

petr.pavel
Člen | 535
+
0
-

@martinit: Myslím, že David ti chtěl říct, že jeho checkbox nevrací vždy FALSE :-) Nejlepší bude, když pošleš co nejmenší kus kódu, který chybu ukazuje a každý si to bude moci vyzkoušet. Taky třeba sám přijdeš na to, že problém je někde jinde (třeba mu nastavuješ výchozí hodnotu).