Předání proměnné/hodnoty do komponenty formuláře

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

Zdravím,
mám formulář a chci po překreslení do něj vložit hodnoty

 public function createComponentQuestions($step, $another = 0, $test = 0) {
    $form = new Nette\Application\UI\Form;
    $form->getElementPrototype()->class('ajax');

    dump('krok:' . $step);
	dump('krok:' . $another);
	...
  }

a šabloně:

<div n:ifset="$step" class="col-xs-12 text-center">
  {control questions, $step}
</div>

Bohužel proměnná tam nikdy nedoleze a prvním parametru je jen název komponenty :(

CZechBoY
Člen | 3608
+
0
-

Do createComponent nic nenacpes… Ten parametr ze sablony se ti preda az do render metody formulare. Predej si parametry uz v konstruktoru, nebo setteru v createComponent v presenteru.

JaxP
Člen | 62
+
0
-

Bohužel potřebuji překreslovat pořád dokola ten stejný formulář, kde se mění hodnoty. Pokud pŕedám hodnoty přes „this->“, tak se vyplní pouze poprvé (pokud zavolám redraw přes handler), ale po odeslání ho potřebuji vykreslit znovu, ale s jinou hodnotou. V tu chvíli se mi předají hodnoty pouze do templaty, ale nikoliv do presenteru.

 public function createComponentQuestions() {
 	...
    $form->addHidden('step')->setDefaultValue($this->step);
    ...
}

public function questionFormSucceeded($form, $values) {
	$this->step = $values->step++; // formular stale uvidi $step == 1
    $this->template->step = $values->step++; // sablona uvidi $step == 2
    $this->redrawControl();
}

Nedari se mi nove hodnoty dostat do formu.

CZechBoY
Člen | 3608
+
0
-

Pokud delas vicekrokovy form tak zkus web-chemistry/wizard