nefunguje vyber polozky cez selectbox
- srobowak
- Člen | 27
Zdravim, na formulari mam select, v ktorom sa da vyberat kategoria. Hacik je ale v tom, ze mam rozne typy kategorii, a ja chcem dat uzivatelovy na vyber iba kategorie urciteho typu, na zaklade parametra v adrese.
Robim to nasledovne:
– v metode renderAdd mam parameter $what, ktory si ulozim do atributu presentera:
public function renderAdd($what)
{
$this->categoryType = $what;
}
- v metode createComponentAddItemForm() si na zaklade tohto atributu vytiahnem prislusne kategorie:
protected function createComponentAddItemForm()
{
Debugger::dump($this->categoryType);
$form = new Form();
$form->addSelect('category', 'Category:', $this->context->database->query("SELECT id, name FROM item_category WHERE type = ".$this->categoryType)->fetchPairs() );
...
$form->onSuccess[] = callback($this, 'addItemFormSubmited');
return $form;
}
- a v metode addItemFormSubmited() by som rad spracoval vybranu hodnotu, ale $form->values->category mi vrati NULL
Problem je v tom, ze po odoslani formulara sa z nejakeho dovodu najskor zavola metoda createComponentAddItemForm(), potom addItemFormSubmited() a az nakoniec renderAdd().
Potom je logicke, ze pri volani createComponentAddItemForm() nie je este atribut $this->categoryType nastaveny (ma hodnotu NULL). Dosledkom toho je, ze selectBox neobsahuje ziadne kategorie, a asi preto mi v metode addItemFormSubmited() vyraz $form->values->category vrati NULL.
Preco sa pri odoslani formulara volaju tieto metody v takomto obratenom poradi a ako by sa to dalo obist ?? Vdaka za rady.
- marek.dusek
- Člen | 99
vymen „renderAdd“ za „actionAdd“
viz zivotni cyklus presenteru
- render se vola az po zpracovani signalu
- takze kdyz „jen“ zobrazujes formular poprve, vyzada si jeho vytvoreni az sablona, tj. renderAdd uz probehlo
- ale kdyz ten formular odesles, vyzada si jeho vytvoreni uz obsluha signalu, takze to do renderAdd jeste nedoslo