Jak si v latte načíst všechny Containery vytvořené ve formuláři?

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

Ahoj,
potřeboval bych si v šabloně načíst všechny vytvořené Containery.
V prezenteru je vytvářím přes foreach, a tak bych je pomocí foreach v latte potřeboval i vykreslovat.

Nepřišel jsem ale na to kde jejich seznam vyčíst. Respektive našel jsem akorát, že v proměnné $form->components tento seznam je, ale jak název napovídá jsou tam i všechny ostatní věci jako inputy, které jsou mimo Container a také třeba odesílací tlačítko.

duke
Člen | 650
+
+1
-

Getter Form::getComponents má jako druhý parametr typ objektu pro filtrování, takže můžeš použít:

	{foreach $_form->getComponents(FALSE, 'Nette\Forms\Container') as $container}
		{formContainer $container}
			...
		{/formContainer}
	{/foreach}

Alternativně můžeš všechny containery vytvářet ve zvláštním containeru (ve kterém nebude nic jiného než další containery), a pak si vystačís v šabloně s již tebou zmíněným:

	{formContainer nazevZvlastnihoContaineru}
		{foreach $_form->components as $container}
			{formContainer $container}
				...
			{/formContainer}
		{/foreach}
	{/formContainer}