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
+
0
-

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
+
0
-

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.

Fyasko
Člen | 106
+
0
-

Aha… Vyzkouším a napíšu jestli to řeší můj problém, protože to není jediný form který plním až v render metodě.. typy Text,TextArea,Hidden jsem zatím plnil bez problémů :) každopádně se ozvu hned jak to testnu :) děkuju :)