Nastavení onClick[] komponenty v presenteru – Nulování persistetních parametrů

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

Dobré odpoledne,

mám jednu komponentu, kde mám nastavený persistentní parametr, který se mi nastaví po Ajaxové události Selectu ve formuláři. Pokud nastavím v Presenteru událost onClick následně pro dvě tlačítka:

//v presenteru
protected function createComponentVisitComponent($name)
$component = new VisitComponent();
if (isset($form['visitForm']['goPayment']))
            $component['visitForm']['goPayment']->onClick[] = callback($this, 'goPaymentFormSubmitted');
if (isset($form['visitForm']['saveVisit']))
	    $component['visitForm']['saveVisit']->onClick[] = callback($this, 'saveVisitFormSubmitted');

Tak mi to vynuluje ty persistentní parametr, což je pro mě vysoce nežádoucí. Tak bych měl dotaz, jestli je možné zachovat nějak persistentní paremtr a zároveň umožnit volat tlačítkem funkci v presenteru. Počítám, že může být chybně nastavený callback, ale nevim, jak správně ho nastavit.

Děkuji za rady

Prochy
Člen | 91
+
0
-

Tak ono to tím callbackem asi nebude. Nějak sem to testoval a stačí, když v presenteru při vytváření komponenty napíšu následující řádek, tak se mi persistentní parametry nastaví na NULL, což mi moc hlava nebere.

protected function createComponentVisitComponent($name)
	$component = new VisitComponent();
	$component['visitForm']
Prochy
Člen | 91
+
0
-

Tak jsem to zkoumal dál v čem by byl asi problém, a asi to bude tím, že když si vyžádám formulář v presenteru z komponenty, tak se formulář vytvoří dřív, než se stihnout nastavit persistentní parametry.

Protože pokud:

V Presenteru:

protected function createComponentTest($name){
	$component = new TestComponent();
	$component['testForm'];
	dump("Presenter");
	return $component;
}
V UI\Control

class .................
.
.
.
protected funcition createComponentTestForm(){
	dump("Komponenta");
	return new Form();
}

Tak se mi první vypíše Komponenta a poté Presenter, pokud zakomentuji $component[‚testForm‘], tak se první vypíše Presenter a poté Komponenta, tak vidim v tomhle problém, ale nějak se mi to nedaří vyřešit. Jediný způsob, co mě napadlo, tak je posílat v komponentě callback($this->presenter,akcePresenteru), což je funkční, ale jestli to je dobrý to nevim.

Editoval Prochy (18. 8. 2014 16:24)