Získání dat z formulářového selectu
- medunrad
- Člen | 27
Ahoj, nevím, jak získat data ze selectu ve formuláři.
Formulář vytvářím takto:
public function createComponentSearchForm(){
$form = new Nette\Application\UI\Form;
$form->addSelect("service", "Služba", $services)
->setRequired("Vyberte službu");
$form->addSelect("city", "Město" , $cities)
->setRequired("Vyberte město");
$form->addSubmit("save", "Hledat");
$form->onSuccess[] = array($this, "searchFormSucceeded");
return $form;
}
a následně po odeslání formuláře se snažím data získat v
public function searchFormSucceeded($form, $values){
}
Nicméně, $values[„city“] a $values[„service“] obsahuje index prvku, který byl zaškrtnut, jak se tedy prosím dostanu ke skutečné hodnotě, kterou uživatel vybral?
- Zuben45
- Člen | 268
Koukni na dokumentaci https://doc.nette.org/cs/forms#… ;)
Pokud chceme místo klíčů položek získat přímo jejich hodnoty, můžeme toho docílit druhým argumentem:
$form->addSelect('country', 'Země:')
->setItems($cities, FALSE);
- nightfish
- Člen | 519
A nebo se odkázat na pole $services
(ke kterému budeš jak v
createComponent*
, tak v *Succeeded
přistupovat přes
$this->services
) – tohle se hodí hlavně v případě, že
v tom poli máš k jednotlivým hodnotám klíče, které se třeba odkazují
do databáze atd. Do metody pro uložení si pak předáš
$values['service']
a do (třeba) flashMessage
použiješ $this->services[$values['service']]
.