„Nekonečný“ rozklikávací formulář
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- Jakub Šulák
- Člen | 222
Mám jeden problém. Potřebuji udělat formulář, kde se po výběru nějaké options v selecboxu zobrazí položka „Hodnota 1“ (textbox). Po napsání prního písmene by se měl pod to přidat textbox „Hodnota 2“, takto až do nějakého libovolného N.
Nyní mám:
<?php
$form = new AppForm($this, 'editParam');
$form->addGroup();
$form->addText('name', 'Název')
->addRule(Form::FILLED,'Název musí být vyplněn.');
$form->addSelect('type', 'Typ parametru',array(Param::TEXT=>'zadání hodnoty',Param::SELECT=>'výběrový'))
->addCondition(Form::EQUAL, Param::SELECT)
->toggle('sendBox');
$form->addGroup()->setOption('container', Html::el('div')->id('sendBox'));
$form->addSelect('multichoice', 'Více možností', array('ne','ano'));
// jednotlive moznosti
$paramOptions = $form->addContainer('options');
for ($i=1; $i<=self::MAX_OPTIONS_OF_PARAM; $i++){
$paramOptions->addText((string)$i, 'Hodnota '.$i)
->addCondition(Form::FILLED)
->toggle('option['.($i+1).']');
}
$form->addGroup();
$form->addSubmit('save', 'Uložit')
->onClick[] = array($this, 'onSave');
?>
Toto bohužel nefunguje (po vybrání ‚type‘=‚výběrový‘ se vypíše rovnou všech MAX_OPTIONS_OF_PARAM inputů).
Jde tedy o to, jak spojit funkci containeru (pro option[1], abych mohl pak
inputy zpracovávat jako pole) a také funkce toggle().
Díky za radu (jak udělat v Nette – ručně bych si to udělat
dokázal).