Ako vykresliť form->container cez foreach
- duke
- Člen | 650
Pro zanoření do kontejneru formuláře použij makro formContainer. Např.:
{formContainer address}
...
{/formContainer}
To makro nastaví do proměnné $_form
zadaný kontejner. Takže
iterovat pak můžeš nad $_form->getComponents($deep, $type)
nebo případně nad $_form->getControls()
což je totéž jako
$_form->getComponents(TRUE, 'Nette\Forms\IControl')
.
- duke
- Člen | 650
Ano. Jen je možné, že některé inputy (checkboxy?) budeš chtít renderovat trochu jinak než ostatní inputy.
Jinak getComponents()
může vracet také vnořené kontejnery.
Takže spíše použij:
{foreach $_form->getComponents(FALSE, 'Nette\Forms\IControl') as $i}
To vrátí jen inputy, které jsou přímo ve tvém kontejneru.
Ale pokud víš, že tam žádné další kontejnery nejsou, řešit to
nemusíš.
- duke
- Člen | 650
Čamo napsal(a):
Načo je ten druhý parameter v getComponents(FALSE, filterType)?
A díky!
Překvapivě na filtrování podle typu.
Tj. vrátí pouze komponenty daného typu.
Např. následujícím způsobem je možné získat všechny inputy typu hidden,
jež jsou v první úrovni zanoření:
$hiddenInputs = $_form->getComponents(FALSE, 'Nette\Forms\Controls\HiddenField');
- idiox
- Člen | 14
Ahoj,
PHP User Deprecated: Variable $_form is deprecated.
Jaká je, prosím, správná proměnná/metoda v nette 2.4?
Díky :)
edit
Tak možná takhle, jestli to není nějaká prasárna? :)
<?php
{formContainer questions}
{foreach $formContainer->getComponents() as $i}
{label $i /}<br>{input $i}
{/foreach}
{/formContainer}
?>
Editoval idiox (4. 10. 2016 22:29)