Získání dat z formulářového selectu

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

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

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

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']].