Překreslení inputu pomocí snippetu (dependent select)
- Barvoj
- Člen | 60
Ahoj,
v aplikaci používám dynamický select načítaný pomocí snippetu.
presenter:
protected function renderDefault()
{
$this->template->_form = $this['myForm']; // workaround
}
/**
* @param string $name
* @return Form
*/
protected function createComponentMyForm($name)
{
$form = new Form($this, $name);
$form->addSelect('first', 'First', ['a', 'b']);
$form->addSelect('second', 'second', ['c', 'd', 'e']);
return $form;
}
default.latte:
{form myForm}
{input first}
{snippet second}
{input second}
{/snippet}
{/form}
Nelíbí se mi ale ta část
$this->template->_form = $this['myForm'];
a tuším že
v novém nette už by se to takto nemělo používat (já zatím stále
používám nette 2.3).
Myslel jsem si, že když celý formulář obalím do
snippetArea
, tak to bude fungovat:
default.latte:
{snippetArea wraper}
{form myForm}
{input first}
{snippet second}
{input second}
{/snippet}
{/form}
{/snippetArea}
myslel jsem, že se provede celý kód formuláře, ale odešle se pouze ten
snippet. Po úpravě to ale skončilo chybou
Undefined variable: _form
.
Lze se tedy v Nette 2.3 nějak vyhnout přiřazování formuláře do proměnné _form? A to že v tomto případě nelze použít snippetArea je záměr?
- David Matějka
- Moderator | 6445
v 2.3 to obalovani snippet areou jeste nefungovalo. tam mas asi dve moznosti
1. to prirazeni do _form, jak pouzivas ted. nebo
2.
{form myForm}
{input first}
{snippet second}
{var $_form = $control['myForm']}
{input second}
{/snippet}
{/form}