Formulář připojený k presenteru nedovoluje unsetnout jakýkoli prvek
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- mcmatak
- Člen | 504
takže chyba vzniká v šabloně
ve všech verzích NETTE
<?php
final class TestPresenter extends BasePresenter
{
public function createComponentForm($name)
{
$form = new \Nette\Application\AppForm($this, $name);
$form->addGroup("test");
$container = $form->addContainer('locales');
$container->addText('z', "Z");
unset($form['locales']['z']);
return $form;
}
public function renderDefault()
{
$this->setLayout(false);
}
}
?>
šablona
<?php
{block #content}
{assign form => $control['form']}
{foreach $form->groups as $group}
{if ($group->controls && $group->getOption('visual'))}
{foreach $group->controls as $formControl}
{$formControl->control}
{/foreach}
{/if}
{/foreach}
?>
pri unset nedojde k odstranení prvku z formuláře pouze k odstranění monitoringu, takže pri tomto pokusu o vykreslení vypadne tahle chyba
InvalidStateException
Component ‚z‘ is not attached to ‚Nette\Forms\INamingContainer‘.
Editoval mcmatak (11. 8. 2010 23:58)
- Patrik Votoček
- Člen | 2221
mcmatak napsal(a):
asi by si to vlákno zasloužilo změnit název, což nevím jak se dělá
editací prvního postu
- David Grudl
- Nette Core | 8228
V tom vykreslování 20 řádky chyběla část
&& $control->getForm(FALSE) === $form
,
doplnil jsem.
Samozřejmě vhodnější by bylo řešení na straně FormGroup jak je udělal Panda, jenže celou dobu přemýšlím, jak se grup zbavit a moc se mi nechce je vylepšovat.