Select závyslý od zvolenej hodnoty

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

Nette sa venujem len niekolko a neviem vyriešiť nasledujúcu vec:
Vytváram rezervačný formulár, v ktorom si može človek vytvoriť rezerváciu v reštaurácií.
Vo formuláry mám dva Selecty. V provom selecte chcem aby si človek vybral miestnost v ktorej chce rezervaciu. V druhom selecte sa mu po vybraní miestnosti zobrazia stoly, ktoré sú v danej miestnosti.
Informácie, ktoré stoly sú v ktorej miestnosti sú uložené v databáze. Každopádne neviem ako pri zmene prvého selectu získať dáta, ktoré zadal/zvolil užívatel(teda typ miestnosti) aby som vedela načítať stoly z databáze.

Skúšala som to metodnou ->setAttribute(‚onchange‘, ‚submit()‘), akúrát nechcem potvrdzovať celý formulár.

Pozerala som sa aj tu na fóre ale nenašla som solídne riešnie. Ak by sa to dala rada by som to vyriešila bez java scriptu. Ak to tu niekde bolo riešené a iba som to nenašla tak ma prosím presmerujte.

Predom dakujem.

Tu je moj formular

<?php
    public function createComponentReservationForm(){
        $rooms = array(
        'Terasa' => 'Terasa',
        'Zahradka' => 'Zahradka',
        'Miestnost_A' => 'Miestnost_A',
        'Miestnost_B' => 'Miestnost_B',
        );

        $form = new Form;
        $form->addText('name', 'Meno:')->setRequired();
        $form->addText('lastname', 'Priezvisko:')->setRequired();
        $form->addText('phone', 'Tel. číslo:')->setRequired();
        $form->addText('email', 'Email:')
            ->setType('email')
            ->setRequired();
        $form->addDateTimePicker('date_time', 'Dátum a čas:')
            ->setRequired();
        $form->addText('people', 'Počet osôb:')
            ->setType('number')
            ->setRequired()
            ->addRule(Form::INTEGER, 'Počet osôb musí být číslo')
            ->addRule(Form::RANGE, 'Počet osôb musí byť vačsí ako jedna a menší ako 15. Pri vačsom počte ludí nás kontaktuje telefonicky alebo e-mailom', array(1, 15));

		//prvý formulár
        $form->addSelect('room', 'Miestnosť:', $rooms)->setPrompt('Zvolte miestnosť')
            ->setAttribute('onchange', 'submit()');	//takto asi nie

		//podla hodnoty room som chcela nastaviť pole stolov, avšak pred odoslaním formuláru je samozrejme hodnota NULL
		$tables = $this->getFreeTables($form->values->room);

		//druhy select $tables závislí na vybranej miestnosti
        $form->addSelect('tables', 'Stôl:', $tables)->setPrompt('Zvolte stôl');

        $form->addSubmit('send', 'Odoslať rezerváciu');
        $form->onSuccess[] = array($this, 'reservationFormSucceeded');
        return $form;
    }

?>
Šaman
Člen | 2666
+
0
-

Dobře je to popsané tady. Používám první řešení.

japijana
Člen | 11
+
0
-

Osobne používam toto a funguje to skvelo. Implementácia na pár minút.

zuzanica
Člen | 2
+
0
-

Dakujem moc. Pomohlo :))