Jak vypsat a naformátovat celý formulář jen s pomocí šablony

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

Ahoj. V presenteru vytvořím přes createComponentFormular nějaký formulář a v šabloně bych ho chtěl vypsat. Nevyhovuje mi standardní renderer, potřebuji ho nějak složitěji formátovat (konkrétně tak, aby se dobře vykreslil v jquery mobile). Snažím se to celé udělat v šabloně, protože vytvářet nový renderer je podle mě nesmysl, protože to znemožňuje snadné vyměnění šablon v případě změny vzhledu.

Potřeboval bych poradit, jak v šabloně vypsat všechny prvky formuláře. Dostal jsem se k tomu,že mi funguje text, password a submit, ale už ne radio. Můj kód:

{form formular}

<ul class="errors" n:if="$form->hasErrors()">
        <li n:foreach="$form->errors as $error">{$error}</li>
</ul>
<li n:foreach="$form->controls as $control">{$control->getControl()->type}</li>



{foreach $form->controls as $control}
	{if in_array($control->getControl()->type, array('text', 'password', 'submit'), true)}
		<div data-role="fieldcontain">
			{label $control->name /}
			{input $control->name}
		</div>
	{elseif $control->getControl()->type === "radio"}
		<fieldset data-role="controlgroup">
		<legend>{$control->label}</legend>
		 ....
		</fieldset>
	{/if}
{/foreach}

{/form}

Pomocí pokusného „<li n:foreach=“$form->controls as $control">{$control->getControl()->type}</li>" jsem zjistil, že $control->getControl()->type nevrací nic v případě radio. Ostatní (text, password, button) vrací, ale v případě radio prvku to nevrátí nic. V čem je problém? Nebo byste mi poradili snadnější způsob vykreslování takového formuláře?

nanuqcz
Člen | 822
+
0
-

Ahoj,
možná hledáš tohle.

vasek125
Člen | 34
+
0
-

Jo, to je ono. Díky.