Získání hodnoty v createComponentForm z setDefaults

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

Ahoj, otázka: je možné získat hodnotu prvku „test“ ve funkci createComponentForm, kterou naplním pomocí metody setDefault v actionForm?

function actionForm($id) {
	$form = $this['form'];
	$form->setDefaults('test' => 1);
}

function createComponentForm(Form $form) {
	$form->addHidden('test');
	dump(hodnota z test);
}
jtousek
Člen | 951
+
0
-

Nijak, createComponentForm se volá (nejpozději) v době volání $form = $this['form'];, tedy před voláním setDefaults.

Spíš řekni co je cílem.

Editoval jtousek (27. 5. 2012 13:22)

joehoe
Člen | 12
+
0
-

Ve funkci createComponentForm mam funkci do ktere potrebuju vlozit jako parametr promennou „test“. Takze jedina moznost pres SESSION? (v url to predavat nechci).

jtousek
Člen | 951
+
0
-

Co je cílem? Ta funkce zcela evidentně nemá co dělat v createComponentForm.

joehoe
Člen | 12
+
0
-

Cílem je vypsání textů vybraných podle parametru funkce.

jtousek
Člen | 951
+
0
-

Víš co hoď sem raději ten kód co máš teď ať se někam pohnem. :-)

22
Člen | 1478
+
0
-

@jtousek: jaká funkce?
@joehoe: data formuláře se plní v action metodě, takže by se ti do hidden prvku měla ta hodnota dostat, akorát bych použil setValues()

jtousek
Člen | 951
+
0
-

22: To právě nevim jaká funkce – údajně nějaká kterou volá v createComponent.

joehoe
Člen | 12
+
0
-

@22: ikdyž použiju setValues a pote zavolam ve fci createComponentForm $form[‚test‘]->getValue(), tak ji to nezobrazi.

@jtousek: tu fci jeste nemam napsanou. Jde mi jen o to, jestli lze nějakým způsobem získat hodnotu komponenty Hidden ve fukce, kde se vytvari formular…

jtousek
Člen | 951
+
0
-

Už jsem řekl že ne, včetně důvodu, ale myslím že bys tu funkci mohl volat někde jinde než při vytváření komponenty. Zkrátka mám podezření na špatný návrh.

22
Člen | 1478
+
0
-

@joehoe: tím, že voláš $form = $this['form']; a komponentu připojíš k presenteru, tak se jaksi provede i ten dump, kde očekáváš hodnotu, která ještě není nastavená, takže napřed se mrkni na životní cyklus presenteru. Pokud si v te action metodě vypíšeš hodnotu test, tak určitě bude nastavená. Jinak taky moc nevím, čeho se snažíš dosáhnout?

Ten tvůj zápis je nějak špatně a divím se, že to vůbec funguje:

public function actionForm($id)
{
        $form = $this->getComponent('form');
        $form->setValues(array(
		'test' => 1
	));
}

protected function createComponentForm()
{
	$form = new Form();
	$form->addHidden('test');

	return $form;
}

Editoval 22 (27. 5. 2012 14:54)