Kombinace zobrazení volitelných formulářů
- Gill
- Člen | 13
Ahoj, prosím Vás nevím jak vyřešit můj problém. Jsem PHP i Nette
nováček.
Mám formulářovou stránku, na které chci dle voleb v select boxu, zobrazit
další formuláře Form1, Form2 nebo oba dva zároveň. Zobrazení obou dvou
zároveň je ten můj problém, nevím jak na to. Pokouším se o to
s toogle.
<?php
$typKomunikace = array(
'1' => 'Volba1',
'2' => 'Volba2',
'3' => 'Volba1 i Volba2',
);
$form->addSelect('typKomunikace', 'Typ komunikace:', $typKomunikace)
->addCondition(Form::EQUAL, 1)
->toggle("Volba1")
->addCondition(Form::EQUAL, 2)
->toggle("Volba2")
->addCondition(Form::EQUAL, 3)
->toggle("Volba1 i Volba2");
?>
Nevím jak toto provést, jak udělat ty formláře Form1, Form2 abych je mohl po té zobrazit oba najedou. Jestli nějak podle tříd, konteineru, nebo kdyby fungovala jenom nějaká podmínka if na ten toggle. S tímto jsem nepochodil a ani ničím jiným. Nepoužívám šablony, třídy.
<?php
$form1 = new Form;
$form1->addGroup()->setOption('container', Html::el('fieldset')->id("Volba1"));
...
?>
Prosím o jakoukoliv radu.
- Tomáš Votruba
- Moderator | 1114
Ahoj, zkus:
$form->addSelect("someInput", "Title")
->addCondition("one")
->toggle("formOne")
->addCondition("two")
->toggle("formTwo");
->addCondition("both")
->toggle("formOne")
->toggle("formTwo");
případně koukni na další možnosti toggle
Editoval Schmutzka (27. 3. 2013 20:36)
- Gill
- Člen | 13
Děkuju za radu, malý náznak že to tak funguje se mi objevil, ale naprosto zvláštně se mi nyní formuláře s podmínkami zobrazují.
Když mám podmínky takto, tak se dokáží zobrazit jenom formuláře V, F ne oboje.
<?php
$typKomunikacePole = array(
'1' => ..
'2' => ..
'3' => ..
);
$form->addSelect('typKomunikace', 'Typ komunikace:', $typKomunikacePole)
->addCondition(Form::EQUAL,'1') ->toggle('V')
->addCondition(Form::EQUAL,'2') ->toggle('F')
->addCondition(Form::EQUAL,'3') ->toggle('V') ->toggle('F') ;
?>
Když takto, tak se dokáže objevit pouze poslední podmínka V i F, na první dvě nereaguje
<?php
$form->addSelect('typKomunikace', 'Typ komunikace:', $typKomunikacePole)
->addCondition(Form::EQUAL,'1') ->toggle('V') ->endCondition()
->addCondition(Form::EQUAL,'2') ->toggle('F') ->endCondition()
->addCondition(Form::EQUAL,'3') ->toggle('V') ->toggle('F') ->endCondition();
?>
V případě že jsem měl jako třetí možnost jenom jednu testovací skupiny, tak na něj taky zobrazování nereagovalo. Vypadá to jako kdyby toggle na mé stránce mohl mít jenom dvě hodnoty, toto ale nemá takhle být ne? Nevíte prosím jak z toho ven, nebo kdy by mohla být chyba? :(
Dále to mám takto, volitelná pole k zobrazení mám nyní ve skupinách, ve nových formulářích se to chovalo stejně
<?php
$form->addGroup()->setOption('container', Html::el('fieldset')->id('V'));
$form->addText....
$form->addGroup()->setOption('container', Html::el('fieldset')->id('F'));
$form->addText....
?>
Editoval Gill (4. 6. 2013 0:53)
- Gill
- Člen | 13
Tak jsem to důkladně povyzkoušel a pohledal a toggle toto prostě asi nezvládá. Nejsem první komu se to stalo. Nejde odeslat dva toogle za sebou v případě že mám tři podmínky. Nevím zda je to nějaký bug a neměl bych to někam napsat do bugů.
Prosím nemáte někdo nějaký nápad jak vyřešit můj problém bez toggle? Zobrazení první skupiny formulářů nebo druhé skupiny a jako třetí možnost obě dvě skupiny formulářů zároveň?
- Filip Procházka
- Moderator | 4668
Co takhle? :)
$form->addSelect('typKomunikace', 'Typ komunikace:', $typKomunikace)
->addCondition(Form::IS_IN, array(1, 3))
->toggle("Volba1")
->endCondition()
->addCondition(Form::IS_IN, array(2, 3))
->toggle("Volba2");