Formulář se selectem + ajax
- kolsi
- Člen | 131
Ahoj, mohl by mi někdo prosím vysvětlit toto chování:
Mám ajaxový formulář, ve kterém je select, např.:
$form = new \Nette\Application\UI\Form($this, $name);
$form->addSelect('test', 'Test', [ 10, 20 ]);
// ...
$form->addSubmit('submit');
$form->onSuccess[] = function() {
$this->redrawControl('test');
};
A šablonu, kde renderuji formulář, ale daný select chci vykreslit jenom za určitých podmínek (které v době tvoření formuláře ještě nemusí být známé), např:
{snippet test}
{form form class => 'ajax'}
<span n:if="$nejakaPodminka">{input test}</span>
{input submit}
{/form}
{/snippet}
U jiných kontrolek není problém, ale u selectu pokud dojde ke splnění $nejakaPodminka a select se tedy nevykreslí, tak přestane fungovat ajax. Požadavek se v pořádku odešle, ale odpovědí není JSON se snippetem, ale HTML kód celé stránky. Žádnou chybu to nevyhodí. A já nedokážu pochopit proč.
- MajklNajt
- Člen | 498
ahoj, a odkiaľ sa berie tá $nejakaPodminka
? najvhodnejšie by
bolo logiku podmienky mať v presetneri/komponente, kde tvoríš ten
formulár:
$form = new \Nette\Application\UI\Form($this, $name);
if($nejakaPodminka) {
$form->addSelect('test', 'Test', [ 10, 20 ]);
}
// ...
$form->addSubmit('submit');
$form->onSuccess[] = function() {
$this->redrawControl('test');
};
a v template potom takto:
{ifset $form["test"]}{input test}{/ifset}