addCondition a elseCondition
- majo1
- Člen | 103
Zdravím, prosím o radu.
Vo formulári mám Select, v ktorom sa dajú vybrať 3 možnosti. Pri každej
možnosti potrebujem zobraziť cez toggle iné inputy.
addCondition mi toggluje správne ale elseCondition nefunguje – input
fyzospsc je neustále viditeľný.
Ďakujem
$form->addSelect('persontype', 'Právna forma:', $personType)
->setPrompt('Vyberte')
->setAttribute('class', 'form-control')
->addCondition($form::EQUAL, 'Právnická osoba')
->toggle('pravospsc')
->toggle('pravostel')
->toggle('pravoskupaauta')
->toggle('poistnaudalost')
->toggle('pzpvinychpoi')
->toggle('intervalplatby')
->elseCondition($form::EQUAL, 'Fyzická osoba - občan')
->toggle('fyzospsc');
- CZechBoY
- Člen | 3608
edit: tohle nefunguje
Je potřeba skrýt fyzopsc
input pokud není vybrána volba
Fyzická osoba - občan
.
Myslím, že se to dělá nějak takhle
$form->addSelect('persontype', 'Právna forma:', $personType)
->setPrompt('Vyberte')
->setAttribute('class', 'form-control')
->addCondition($form::EQUAL, 'Právnická osoba')
->toggle('pravospsc')
->toggle('pravostel')
->toggle('pravoskupaauta')
->toggle('poistnaudalost')
->toggle('pzpvinychpoi')
->toggle('intervalplatby')
->toggle('fyzospsc', false)
->elseCondition($form::EQUAL, 'Fyzická osoba - občan')
->toggle('fyzospsc');
Editoval CZechBoY (28. 9. 2016 11:50)
- CZechBoY
- Člen | 3608
Zkusil jsem si to teda u sebe
protected function createComponentForm()
{
$form = new Form();
$abcID = 'abc-container';
$defID = 'def-container';
$ghiID = 'ghi-container';
$form->addText('abc', 'ABC')
->setOption('id', $abcID);
$form->addText('def', 'DEF')
->setOption('id', $defID);
$form->addText('ghi', 'GHI')
->setOption('id', $ghiID);
$form->addSelect('a')
->setItems(['abc', 'def'], false)
->addCondition(Form::EQUAL, 'abc')
->toggle($abcID)
->toggle($ghiID)
->elseCondition()
->toggle($defID);
return $form;
}
a chová se to jak potřebuješ. Zvolím abc
jsou vidět pouze
abc
a ghi
inputy, zvolím def
je vidět
pouze def
input.
Editoval CZechBoY (28. 9. 2016 11:49)
- majo1
- Člen | 103
asi niekde robím chybu :) Pri prepínaní selectu inputy len menia poradie,
zdá sa.
prikladám môj celý formulár,
ďakujem za ochotu
public function createComponentPzpForm() {
$form = new UI\Form;
$todayDate = new DateTime();
$vehicleType = [
...
];
$form->addSelect('vehicletype', 'Druh vozidla:', $vehicleType)
->setPrompt('Vyberte')
->setAttribute('class', 'form-control');
$form->addInteger('rokvyroby', 'Rok výroby:')
->addRule(Form::RANGE, 'Rok výroby môže byť zvolený od 1800 do 2016', [1800, date('Y')])
->setAttribute('class', 'form-control');
$form->addInteger('objemvalcov', 'Objem valcov v cm<sup>3</sup>: ')
->setAttribute('class', 'form-control');
$form->addInteger('vykonmotora', 'Výkon motora v kW:')
->setAttribute('class', 'form-control');
/*$form->addDate('date', 'Začiatok poistenia:')
->setAttribute('class', 'form-control')
//->setDefaultValue($todayDate->format('d.m.Y'))
->setFormat('D.M.Y');*/
$manifactureBrand = [
...
];
$form->addSelect('manifacturebrand', 'Továrenská značka:', $manifactureBrand)
->setPrompt('Vyberte')
->setAttribute('class', 'form-control');
$form->addText('model','Model vozidla:')
->setAttribute('class', 'form-control');
$fuelType = [
...
];
$form->addSelect('fueltype', 'Druh paliva:', $fuelType)
->setPrompt('Vyberte')
->setAttribute('class', 'form-control');
$form->addText('weight','Najväčšia prípustná celková hmotnosť v kg: (TP 32)')
->setAttribute('class', 'form-control');
$fyzOsOb = "fyzos-ob-container";
$fyzOsPo = "fyzos-po-container";
$pravOs = "pravos-container";
$personType = [
'Fyzická osoba - občan' => 'Fyzická osoba - občan',
'Fyzická osoba - podnikateľ' => 'Fyzická osoba - podnikateľ',
'Právnická osoba' => 'Právnická osoba',
];
$form->addSelect('persontype', 'Právna forma:', $personType)
->setPrompt('Vyberte')
->setAttribute('class', 'form-control')
->addCondition($form::EQUAL, 'Právnická osoba')
->toggle($pravOs)
->toggle($fyzOsPo, false)
->elseCondition($form::EQUAL, 'Fyzická osoba - občan')
->toggle($fyzOsOb)
->toggle($pravOs, false);
$form->addText('pravospsc', 'PSČ držiteľa')
->setOption('id',$pravOs)
->setAttribute('class', 'form-control');
$form->addText('pravostel', 'Telefónne číslo poistníka')
->setOption('id',$pravOs)
->setAttribute('class', 'form-control');
$firstCarBought = [
...
];
$form->addSelect('pravoskupaauta', 'Kedy ste si kúpili prvé auto?', $firstCarBought)
->setPrompt('Vyberte')
->setOption('id',$pravOs)
->setAttribute('class', 'form-control');
$insuranceEvent = [
'Nie' => 'Nie',
'Áno' => 'Áno',
'Doteraz som nemal PZP uzatvorené' => 'Doteraz som nemal PZP uzatvorené',
];
$form->addSelect('poistnaudalost', 'Spôsobili ste do dnešného dňa poistnú udalosť, ktorá bola hradená z PZP? ', $insuranceEvent)
->setPrompt('Vyberte')
->setOption('id',$pravOs)
->setAttribute('class', 'form-control');
$form->addSelect('pzpvinychpoi', 'Máte uzatvorené poistenie aj v iných poisťovniach?', [
'Áno' => 'Áno',
'Nie' => 'Nie',
])
->setPrompt('Vyberte')
->setOption('id',$pravOs)
->setAttribute('class', 'form-control');
$form->addSelect('intervalplatby', 'Interval platby', [
...
])
->setPrompt('Vyberte')
->setOption('id',$pravOs)
->setAttribute('class', 'form-control');
$form->addText('fyzospsc', 'PSČ držiteľa fyz')
->setOption('id',$fyzOsOb)
->setAttribute('class', 'form-control');
$form->addProtection('Vypršel ochranný časový limit, odešlete prosím formulář ještě jednou');
return $form;
}
Editoval majo1 (28. 9. 2016 12:03)
- CZechBoY
- Člen | 3608
Ajo, až když jsem si to dal do idečka, který na mě řvalo, tak jsem si
toho všiml :-)
Do elseCondition nedáváš podmínku, ale je to jen else větev… proto je asi
lepší použít elseCondition + addCondition:
$form->addSelect('persontype', 'Právna forma:', $personType)
->setPrompt('Vyberte')
->setAttribute('class', 'form-control')
->addCondition($form::EQUAL, 'Právnická osoba')
->toggle($pravOs)
->toggle($fyzOsPo, false)
->elseCondition()
->addCondition($form::EQUAL, 'Fyzická osoba - občan')
->toggle($fyzOsOb)
->toggle($pravOs, false);
Editoval CZechBoY (28. 9. 2016 12:12)