Vykreslení dynamického formuláře – zjištění typu prvku
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- Marsme
- Člen | 75
Potřebuji vykreslit dynamický počet prvků formuláře. Tudíž je v třídě formuláře plním do containeru.
foreach ($variants as $var) {
$block = $form->addContainer("varianta_" . $var->id);
$block->addRadioList("main","Hlavní varianta")
->setDefaultValue($var->main);
$block->addText("name","Název varianty")
->setRequired("Musíte zadat název varianty")
->setDefaultValue($var->name);
$block->addSelect("display","Zobrazovat",$this->products->getProductVariantDisplayOption())
->setDefaultValue($var->display);
$block->addText("price","Prodejní cena")
->setDefaultValue($var->price);
}
V šabloně je následně takto vykresluji:
{form variantAddForm}
{foreach $form->getComponents() as $container}
<tr>
{if $container->name !== "save" && $container->name !== "id_product"}
{foreach $container->getComponents() as $control}
<td>{$control->control}</td>
{/foreach}
{/if}
</tr>
{/foreach}
{/form}
Potřebuji ještě ale ošetřit abych když formulářový prvek je select aby se před ním zobrazila ikonka tzn potřebuji tam udělat nějakou podmínku kde zkontroluji že jde o select. Jak to udělat?
Celkově se mi tohle řešení moc nelíbí? Jak to udělat lépe? A přesto mít možnost to vykreslit manuálně?
Editoval Marsme (28. 2. 2013 22:24)
- Vojtěch Dobeš
- Gold Partner | 1316
Nu, ty už to vykresluješ manuálně. Tak bych jen neiteroval po obsahu toho kontejnteru, ale vypsal jednotlivé prvky. A tam kde je potřeba nějaká ikona, dal ikonu.