Select závyslý od zvolenej hodnoty
- zuzanica
- Člen | 2
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;
}
?>