setItems v render metodě nevrací hodnoty
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- Fyasko
- Člen | 106
Dobrý večer všem.
Mohl by mi někdo poradit proč „nejde“ a jak „vyřešit“ můj
problém?
Potřebuju selectbox plnit rozdílnou hodnotou. Takže nastavuju items v renderu dle id. Hodnoty mi vykreslí správně, ale po zpracování jsou nulové.
Můj kód:
PRESENTER
<?php
public function createComponentSelect()
{
$form->addSelect('choice')
->setPrompt('vyber');
$form->onSuccess[] = $this->whereIsFail;
return $form;
}
public function WhereIsFail($form)
{
$muhehe = $form->getValues();
$this->any->doThis($muhehe->vyber);
}
public function renderDefault()
{
$enemy = $this->model->function('any');
$this['select']['choice']->setItems($enemy);
}
?>
Píšu kód z hlavy, ale je to přesně to, co mě zastavuje. Můžu se zeptat kde a proč je problém že:
<?php
$muhehe->vyber == NULL
?>
Děkuju za jakoukoliv odpověď :)
- jiri.pudil
- Nette Blogger | 1032
Nette jako bezpečnostní opatření kontroluje, jestli mu uživatel nepodstrkává nějakou hodnotu, která v selectboxu není definovaná. No a protože zpracování formuláře je signál, a tudíž se vykoná ještě před renderem, není tam v tu chvíli definovaná žádná. Stačí to naplnění selectu hodnotami přesunout do action.