Vlastní vykreslování formu

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

Ahoj všichni,

nemůžu to rozseknout…nejde mi o konkrétní řešení, ale spíš o best practice.
Potřebuji vykreslit tabulku s checkboxama + tlačítko nekonec (třebas „smaž označené“). Tabulku vykresluji přes template {foreach…}tabulka{/foreach}, ale co ta zatracená tlačítka?
První nápad byl formulář vygenerovat v Presenteru v metodě createComponent. Ale přijde mi to jako nehezké míchání (přece jenom 95% jsou informace neformulářového charakteru, lépe jim bude v templatu než v nějaké metodě), template by tedy byla logická volba.
Ale jak na to? Ruční generování formuláře mi sice nevadí, ale moc mi to nezapadá do celkového konceptu frameworku. Spíš mi něco uniká, jenže co…

Díky, Michal

wotaen
Člen | 82
+
0
-

Malý update, nakonec jsem to vyřešil následovně, kdyby to někoho zajímalo…

V metodě XZPresenter->createComponent vytvářím formulář následovně:


foreach($this->getContacts() as $contact) {
$form->addCheckbox(‚contact‘.$contact->id,'');
}

getContacts je result z databaze

v samotne sablone potom delam tohle…


{foreach $contacts as $contact}
<tr>
<td>{$refineForm[‚contact‘.$contact->id]->control}</td>
<td>{$contact->email}</td>
<td>{$contact->name} {$contact->surname}</td>
<td>{$contact->customerName}</td>
<td>{$contact->language} / {$contact->country}</td>
<td>{$contact->type|type}</td>
</tr>
{/foreach}

kravčo
Člen | 721
+
0
-

Lepšie na to pole checkboxov by asi boli kontajnery – viď príklad k triede Form (API → Nette\Forms\Form.php → Example: How to use naming containers)