Toggle() na formuláři funguje naopak
- MikKuba
- Člen | 83
Ahoj,
Mám celkem jednoduchý formulář, ve kterém pomocí addCondition() a toggle() na RadioListu chci zobrazovat buďto textový input, nebo select. To, že se mi defaultně načtou obě „togglovací“ pole zobrazená mi tak nevadí, ale když vyberu z radioListu možnost „page“, tak se zobrazí input pro URL a když vyberu z radia „url“, zobrazí se select pro stránku. Prostě naopak.
$form->addRadioList('type', 'Typ položky:', ['page' => "Statická stránka", 'url' => "Vlastní URL"])
->addCondition(Form::EQUAL, 'page')
->toggle('select-page')
->elseCondition()
->addCondition(Form::EQUAL, 'url')
->toggle('insert-url')
->endCondition();
$form->addText('page_id', 'Stránka')
->setOption('id', 'select-page')
->setHtmlAttribute('class', 'form-control');
$form->addText('url', 'URL odkaz')
->setOption('id', 'insert-url')
->setHtmlAttribute('class', 'form-control');
V šabloně potom takto:
<div class="form-group">
<div class="col-sm-3 control-label">{label type /}</div>
<div class="col-sm-9">{input type }</div>
</div>
<div class="form-group" id="select-page">
<div class="col-sm-3 control-label">{label page_id /}</div>
<div class="col-sm-9">{input page_id }</div>
</div>
<div class="form-group" id="insert-url">
<div class="col-sm-3 control-label">{label url /}</div>
<div class="col-sm-9">{input url }</div>
</div>
Dole v layoutu pak samozřejmě načítám i JS:
<script src="{$basePath}/js/netteForms.js"></script>
<script src="{$basePath}/js/nette.ajax.js"></script>
Zkoušel jsem i z položky „type“ udělat jen klasický checkbox a následující dva inputy zobrazit jen po zaškrtnutí checkboxu, ale taky fungovalo naopak.
- David Grudl
- Nette Core | 8227
Předpokládám, že to je chyba v masteru, ale stable verze funguje dobře, ne?
- MikKuba
- Člen | 83
David Grudl napsal(a):
Předpokládám, že to je chyba v masteru, ale stable verze funguje dobře, ne?
Jak to myslíš? Mám nastavené normálně „nette/forms“: „^3.0“. Nebo je s Togglem od Nette 3 potřeba něco jinak? Na starším projektu kde je Nette ještě 2.4 tak tento toggle funguje správně.
- David Grudl
- Nette Core | 8227
Když dáš composer show
, tak ti to řekne, jakou máš
staženou verzi. Asi to bude dev-master.