Nastavení defaultních hodnot v onSuccess() metodě

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

Ahoj, už z vás někdo řešil tento problém ?

protected function createComponentForm(){
.
.
$form->onSuccess[]=[$this,'saveForm'];
return $form;
}

public function saveForm($form){
$values = $form->getValues();

$this['form']->setDefaults($values);
}

zkusil jsem snad milion způsobů a za boha se mi ten form nenaplní. Když nastavuju default třeba v signálu, tak je to bez problémů, ale v onSuccess(), bez šance.. je mi asi jasné, že to bude souviset s životním cyklem presenteru, ale opravdu nevím jak to vyřešit.. Používám to ve vlastní komponentě. Díky za pomoc

Martk
Člen | 661
+
+2
-

Hodnoty po odeslání formuláře se nastavují přes

$form->setValues($array);

setDefaults nefunguje, protože po odeslání formuláře nesplňuje podmínku: https://api.nette.org/…ner.php.html#49

kleinpetr
Člen | 480
+
0
-

Ok, díky, jaký je tedy v těchto funkcích rozdíl ? když na to koukám, tak setDefaults() pak stejně volá setValues()..

Martk
Člen | 661
+
0
-

Př. Když nastavuješ výchozí hodnoty v render*, action* metodách přes setValues, tak po odeslání špatně vyplněného formuláře se zobrazí ty hodnoty v setValues. Při použití setDefaults se to nestane, protože tam je to chráněno a zobrazí se uživatelské hodnoty.

kleinpetr
Člen | 480
+
0
-

Super :) díky ti za vysvětlení ;)

kleinpetr
Člen | 480
+
0
-

Teď mám ještě problém u radioListu, při vytváření formuláře, mu nastavím ->setValue('1'); vše funguje, ale pokud je $form->isSubmited() tak se prostě hodnota nenaplní.. nemá někdo tip ? Ale tím teď nemyslím naplnění již odeslaného radioListu, protože mám form rozdělen na groupy a vždy odešlu jen container formuláře a vykreslím další container, takže uložím jeden, a v druhém, který zatím není vidět je radioList, který má setValue(), po odeslání se ale container zobrazí a radioList je empty, když stránku načtu ručně, tak je vyplněn.