Formulář a dynamické názvy prvků – manuální vykreslení

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

Vytvářím formulář s dynamickým počtem prvků na základě dat z databáze. Chtěl bych ty prvky poté v latte vykreslit také dynamicky pomocí nějakého foreach, abych mohl použít label a input zvlášť: {label element/}{input element}. Jak to udělat? Díky

Takhle se vytváří formulář

function createComponentForm() {
        $form = new UI\Form();
        foreach ($els $el) {
            $form->addCheckbox("element".$el->id, $el->name);
        }
        ...

A takhle nějak by mělo vypadat vykreslování prvků:

{foreach $form->elements as $element}
        <tr>
                <td>{label $element->name/}</td>
                <td class="last">{input $element->control}</td>
        </tr>
{/foreach}
jiri.pudil
Nette Blogger | 1032
+
0
-

Makrům label a input můžeš v pohodě předat rovnou objekt s formulářovým prvkem. A IMO by bylo vhodnější použít Container:

$container = $form->addContainer('checkboxes');
foreach ($els as $el) {
	$container->addCheckbox($el->id, $el->name);
}
<tr n:foreach="$form['checkboxes']->controls as $control">
	<td>{label $control /}</td>
	<td>{input $control}</td>
</tr>
simPod
Člen | 383
+
0
-

díky, funguje!