Dynamické přidávání prvků do formuláře

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

Ahoj,

tvořím překladatelský systém, kde se ve formuláři v Radiolistu nejdříve vybere zdrojový jazyk a poté v checkboxlistu 1 či více cílových jazyků.

Na základě této volby potřebuji vygenerovat překladatele z databáze, které disponují danými jazykovými kombinacemi a setříděné podle těchto kombinací.

Otázka je, jak tyto prvky dynamicky přidat do formuláře. Vím, že pomocí Kdyby Replicatoru mohu přidávat prvky do formuláře prvky, ale objevil jsem pouze ukázky s novými prázdnými prvky formuláře typu „addText“. Nevím ale, jak mohu přidávat v tomto případě checkboxy s již přiděleným ID překladatele a jeho jménem atd., které potřebuji natáhnout z DB.

Je Kdyby Replicator také cesta nebo je řešení jinde nebo složitější?

Děkuji za radu!

Pavel Kravčík
Člen | 1196
+
0
-

Udělej komponenty, tam si předej ID z předcházející. Nemusí to být jeden obrovský formulář.

	$trans = $repository->getFindId(['lang' => ['cz', 'ru']);

	foreach($trasn as $bi)
	{
		$form->addCheck($bi->id, $bi->name);
	}
jik
Člen | 149
+
0
-

Takto jsem formuláře používal pod Nette 2.2, teď přecházím na 2.4 a hlásí to neexistenci hned prvního prvku:

	protected function createComponentEditSubjcasdForm() {
		$form = new Form;
		foreach($this->pole as $item){
			$form->addText($item->key, $item->nazev, 80, 200);
			$ids[] = $item->key;
		}
		$this->template->ids = $ids;
		$form->addProtection('Vypršel časový limit, odešlete formulář znovu');
		$form->addSubmit('write', 'Ulož');
		$form->onSuccess[] = [$this, 'editSubjcasdFormSubmitted'];
		return $form;
	}

a šablona:

{foreach $ids as $id}
	<tr>
		<td width="400">{label $id}</td>
		<td>{control $id}</td>
	</tr>
{/foreach}

Šablona vidí pole ids a má správné hodnoty, stejně form->components také tyto položky obsahuje. Nevíte prosím, kde by mohl být problém?

jiri.pudil
Nette Blogger | 1032
+
+1
-

{control $id}? Nemyslel jsi spíš {input $id}?

jik
Člen | 149
+
0
-

Hmmm, tak dlužím už pár piv. Děkuji.