Kombinace zobrazení volitelných formulářů

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Gill
Člen | 13
+
0
-

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
+
0
-

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
+
0
-

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
+
0
-

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
+
+1
-

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");
Gill
Člen | 13
+
0
-

Filip Procházka: Děkuji moc!!!! Takhle to funguje perfektně. Super :-)