Vykreslování inputů, které nejsou v containeru

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

Zdravím,

mám továrničku na formulář:

		...
		$form = new Form();
		$address= $form->addContainer("address");
$address->addText('street', 'Ulice');
$address->addText('streetNum', 'Č.P.');

$form->addText('firstName', 'Jméno');
$form->addText('lastName', 'Příjmení');
		...

a v šabloně se snažím vykreslovat jen inputy, které nejsou uvnitř nějakého containeru. Bohužel se mi to nedaří. Zkoušel jsem opodmínkovat vykreslovací foreach tak, aby nevykresloval container.. to ovšem funguje, container se nevypíše, ale jeho obsah bohužel ano.

 <fieldset>
    {foreach $form->controls as $formControl}
        {if !($formControl instanceof Controls\Container)}
            {$renderer->renderPair($formControl)|noescape}
        {/if}
    {/foreach}
</fieldset>

Je nějaká možnost, jak na úrovni šablony zjistit, zda je formControl uvnitř nějakého containeru?

Editoval Usoplesk (8. 9. 2017 12:26)

David Matějka
Moderator | 6445
+
0
-

Ahoj, defaultni implementace vytahuje vsechny IControl rekurzivne, melo by tedy stacit pouzit neco jako

{foreach $form->getComponents(FALSE, Nette\Forms\IControl) as $formControl}
David Matějka
Moderator | 6445
+
0
-

sorry, ma to byt Nette\Forms\IControl::class

Usoplesk
Člen | 13
+
0
-

Děkuju, už to mám. Zapomněl jsem jen v šabloně dát Nette\Forms\IControl do uvozovek.

Editoval Usoplesk (11. 9. 2017 10:30)