Dynamické přidávání prvků do formuláře
- jandik.n
- Člen | 41
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
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
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?