Zmizení hodnoty ze selectu
- tajo
- Člen | 20
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
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.