Replicator a defalt Value

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

Zdravím,

potřeboval bych poradit ohledně replicatoru a addDynamic. Mám formulář kde toto používám, jde pouze o seznam textboxů (čili co jedna replikace to jeden input). Vše funguje jak má, ale potřeboval bych k tomu přidat následující chování:

v session mám pole hodnot. Pokud je pole prázdné, tak chci klasické chování s jedním prázdným text inputem a možností přidat další. Když už ale v poli mám hodnoty, potřeboval bych hned při vytvoření formuláře vytvořit příslušný počet inputů a nastavit jim default values podle pořadí v session (pořadí není až tak důležité), se zachováním možnosti přidávat/odebírat inputy dle libosti.

Replicator používám poprvé, takže se v tom ještě moc neorientuji.

Napdá někoho jak toto realizovat už v továrničce? Chtěl bych se vyhnout javascriptu kterým si ‚naklikám‘ pole až po vytvoření formu a pak je naplním (to považuji za prasečinu).

Díky moc za odpovědi!

Editoval j0hny (15. 10. 2013 15:54)

David Matějka
Moderator | 6445
+
0
-

melo by fungovat:

$container = $form->addDynamic(...);
$container->setValues($values);

viz https://github.com/…ontainer.php#L226
kde $values bude pole ve zhruba nasledujicim tvaru:

[
	1 => [foo => value1],
	2 => [foo => value2]
]

jen si musis dat pozor, aby se to vytvarelo pouze pri inicializaci formulare a ne po jeho odeslani – to si overis pres

$form->isSubmitted();

jen je problem, ze toto vyzaduje jiz pripojeni formulare k presenteru, takze bud musis pri inicializaci formu

$form = new Form($this, $name);

kde $name je nazev komponenty odpovidajici createComponent* metode

nebo to isSubmitted() volat treba z action* metody presenteru

if(!$this['nejakyFormular']->isSubmitted()) {
	$this['nejakyFormular']['dynamickyKontejner']->setValues();
}
j0hny
Člen | 33
+
0
-

Díky moc za rychlou odpověď, ani jsem nečekal že to bude takhle jednoduché. Funguje!