Problém s validací hodnoty z selectboxu při použití setItems
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- edmund
- Člen | 28
Mám stránku, která zobrazuje detailní informace o sportovní aktivitě a
formulář pro doplnění značek k této aktivitě. Formulář obsahuje
selectbox, jehož hodnoty jsou závislé na druhu zobrazené aktivity.
formulář definuji v presenteru takto:
protected function createComponentDetailZnackaForm()
{
$form = new Form;
$form->addSelect('znacka_id', 'Značka:')
->setRequired('Zadej značku.');
$form->addSubmit('save', 'Uložit')->setAttribute('class', 'default');
$form->addSubmit('cancel', 'Zrušit')->setValidationScope(NULL);
$form->onSuccess[] = callback($this, 'detailAktivitaZnackaFormSubmitted');
return $form;
}
dále mám v presenteru
public function renderDetail($id=0)
{
...
$form = $this['detailZnackaForm'];
if (!$form->isSubmitted()) {
$znacky=$this->getService('model')->getZnacky()->where("typ_id",$this->aktivity->get($id)->typ_id)->fetchPairs("id", "nazev");
if (!$znacky) {
throw new NA\BadRequestException('Znacky nenalezeny');
}
$form['znacka_id']->setItems($znacky);
...
}
}
Formulář se zobrazí správně, selectbox obsahuje správné hodnoty,
v html zdroji stránky správně nadefinované, ale nejde odeslat, protože mi
pořád hlásí „Zadej hodnotu značky.“, přestože v select boxu mám
hodnotu vybranou. Testoval jsem, co se odesílá a znacka_id je opravdu
prázdná.
Když ale naplnění select boxu přesunu už do „továrničky“,
tedy místo:
$form['znacka_id']->setItems($znacky);
v renderDetail metodě použiju:
$form->addSelect('znacka_id', 'Značka:',$znacky)
v createComponent
tak vše funguje jak má. V čem může být problém?