Zmizení hodnoty ze selectu

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

Zdravím,

ve formuláří mám Select, který plním z DB podle dvou parametrů, které mám v URL (categoryID=x&projectID=y). Select se v pořádku vytvoří. Vypadá to nějak takto:

protected function createComponentEnterWorkForm()
{
    $form = new Form;

    $bugs = $this->getService('model')->getMantisBugs((int) $this->getParam('projectID'), (int) $this->getParam('categoryID'));

    foreach ($this->bugs as $bug){
      $bugsSelect[$bug->id] = $bug->summary;
    }

    $form->addSelect('bug_id', 'Bug:', $bugsSelect);

    $form->addSubmit('save', 'Uložit')->setAttribute('class', 'default');
    $form->onSuccess[] = callback($this, 'EnterWorkFormSubmitted');

    $form->addProtection('Prosím odešlete formulář znovu (security token has expired).');
    return $form;
}

Potíž je však se zpracováním. Hodnota bug_id je vždy NULL – nepředá se správné ID. Zpracování:

public function EnterWorkFormSubmitted(Form $form)
	{
		if ($form['save']->isSubmittedBy()) {
		    dump($form->values);
       		    exit;
	}

Háček je tedy asi v oněch parametrech v URL, dle kterých se vytváří select z DB a z něho pak to pole pro select. I když moc nerozumím tomu, proč by se nette potřebovalo nějak zpětně koukat na to, čím jsem ten select plnil.

Proč se mi vždy předá v bug_id NULL, když ten select je v pořádku (v HTML)?

Jan Voráček
Člen | 90
+
0
-

Ověřuje se, jestli hodnota odeslaná selectem není podvržená. A jelikož po odeslání formuláře zmizí parametry, podle kterých se select sestavil, ověřuje se existence hodnoty v prázdném selectu.

Buď si je posílej ve skrytých polích a sestavuj select z nich, nebo z nich udělej persistentní parametry presenteru.