Nastavení hodnot v SelectBox

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Aldaris
Člen | 6
+
0
-

Dobry den

Poradte mi, prosim, kde muze byt chyba. V presenteru mam:

<?php
protected function createComponent($name)
{
	$typ = array(
    'aaa' => "aaaaaa",
    'bbb' => "bbbbbb"
  );
	switch ($name) {
	  case 'pridatCinnost':
  	  $form = new AppForm($this, $name);
  	  $form->addSelect('typ','Typ činnosti :', $typ)
       	       ->addRule(Form::FILLED,'Musíte zadat typ činnosti !');
      $form->addHidden('id_uziv');
      $form->onSubmit[] = array($this, 'pridatCinnostFormSubmitted');
      return;
  }
}
?>

Zde funguje vse tak jak ma, ale kdyz chci potom v renderovaci funkci, ktera tento formular vykresli zmenit udaje v SelectBoxu na neco jineho, neprojde to validatorem. HTML kod se vykresli v poradku, ale proste me to pak uz nepusti dal.

<?php
public function renderPridatCinnost($id)
{
  $komponenta = $this->getComponent('pridatCinnost');
	$typ = array(
    'ccc' => "cccccc",
    'ddd' => "dddddd"
  );
  $komponenta['typ']->setItems($typ);
}
?>

Po provedeni tohoto kodu je jiz SelectBox nevalidni

Klokan
Člen | 47
+
0
-

Je to způsobeno životním cyklem presenteru, že to děláš až v render metodě. Taky jsem tento problém nedávno řešil. Pokud tu hodnotu naplníš v action, tak Ti to bude fungovat. Nějak jsem to do hloubky nestudoval.

Aldaris
Člen | 6
+
0
-

No taky me to ted napadlo.. A muzes poradit teda, kde bych ten kod na zmenu dat mel mit, aby se mi ta zmena spravne promitla? Jestli to bude v nejake metode, tak ji potrebuju predat parametr $id. momentalne jej predavam pomoci GET a predpokladam, ze metoda renderXxx($id) si vytahne hodnotu prave z GETu, je to tak? Ten snippet co jsem sem dal je velice zjednoduseny. Ve skutecnosti potrebuju vytahnout data z databaze za pomoci toho $id a nasledne temito daty naplnit SelectBox.

EDIT: neumim cist, promin.. zkusim to hodit do action.. nazev metody teda bude actionPridatCinnost($id)?

Editoval Aldaris (26. 11. 2009 14:05)

Aldaris
Člen | 6
+
0
-

Parada, tak uz mi to jede, diky za radu.. Presne, jak jsi rikal.