Form->setDefaults → pouze prvky v poli

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

Ahoj,

nebylo by logictejsi, kdyby metoda setDefaults ve Formu nastavila pouze polozky, ktere ji predam a ostatni nechala nedotceny namisto vymazani? Dejme tomu, ze vytvarim form, udelam si tam par hiddenu a pak zavolam setDefaults. Ano mohu ty hiddeny nasetovat i v setDefaults, ale to mohu i opacne nasetovat value pri vytvareni prvku :-). Zatimco takhle bych mohl pouzit oboji, dle situace.

Jod
Člen | 701
+
0
-

To by vyriešilo pridanie nepovinného druhého parametra, ni? Niečo ako setDefaults(array $values, bool $clear = true)

ViliamKopecky
Nette hipster | 230
+
0
-

souhlas

David Grudl
Nette Core | 8218
+
0
-

Teď dorazí David Majda a zatrhne vám parametr bool :-)

Ale vážně: není mi úplně jasný ten cyklus, který používáš, tj. proč potřebuješ setDefaults volat vícekrát.

ViliamKopecky
Nette hipster | 230
+
0
-

David Grudl napsal(a):

Teď dorazí David Majda a zatrhne vám parametr bool :-)

Ale vážně: není mi úplně jasný ten cyklus, který používáš, tj. proč potřebuješ setDefaults volat vícekrát.

Myslim, že nemyslel volat setDefaults vícekrát, ale jednou setDefaults a přitom nastavovat hidden políčkům hodnoty přes FormConrol::setValue()

A.
Člen | 87
+
0
-

enoice napsal(a):
Myslim, že nemyslel volat setDefaults vícekrát, ale jednou setDefaults a přitom nastavovat hidden políčkům hodnoty přes FormConrol::setValue()

Tak tak.

<?php
$item = $form->addHidden('foo');
$item->value = 5;
...

$form->setDefault(array('bar' => 1));
?>

mi premaze foo.

LM
Člen | 206
+
0
-

Co to má za význam tu hodnotu posílat do formuláře, když ji znáš a stejně ji pak přepíšeš při odeslání?

Jod
Člen | 701
+
0
-

A keď tak môžeš presunúť to nastavovanie za setDef..

<?php
$item = $form->addHidden('foo');
...
if(!$form->isSubmitted()) {
	$form->setDefault(array('bar' => 1));
	$item->value = 5;
}
?>

Hodnoty aj tak neni treba nastavovať znova pri postbacku
Ňe? :D

Mas3r
Člen | 116
+
0
-

No já jsem měl stejný problém,…

Nastavil jsem si form a do Hidden jsem dal zkratku jazyka. Pak jsem však protože id=0 dal setDefault(blank) a ten jazyk mi to přepsalo. Takže nakonec jsem smazal to setDefault(blank)

David Grudl
Nette Core | 8218
+
0
-

Ukecali jste mě, setDefaults() už nepřemazává ostatní prvky.