best practice naplnění defaultních dat formuláře, když se na stránce volá spoustu ajaxových požadavků

sevca79
Člen | 55
+
0
-

Ahoj,
jsem v nette začátečník a zajímalo by mě jaký je best practice na naplnění dat formuláře či jiných komponent, když jich je na stránce více a každá vykonává nějaké ajaxové požadavky

asi je blbost to cpát do actionDefault, která se tuším volá při každé ajaxovém handleru?

public function actionDefault($id) {
	$this['myForm']->setDefaults($this->repository->getData($id));
}

to by se asi vykonávalo i tehdy, když to není potřeba

nebo to dávat až když se vytváří komponenta do createComponent??

public function createComponentMyForm() {
	$productId=$this->getParameter('id');
	$this['myForm']->setDefaults($this->repository->getData($id));

	$form=$formFactory->create();

	return $form;
}

to teda nemám vozkoušený a nevím zda bu to vůbec fungovalo, když zřejmě asi ještě formulář není vytvořen :)

nebo kde mám ty defaultní hodnoty formuláře či jiných komponent naplňovat..
omlouvám se zřejmě za stupidní otázku, kterou by měl asi každý znát :)

a když už mám tak rozepsáno, tak ještě prosím je špatně když dávám třeba nějaký parametr, který díky kterému s komponentou pracuju, tak že ho dávám továrničce?? To používám zas u gridů.

např. opět

public function actionDefault($id) {
	$this->myGridFactory->productId=$id;
}

nebo lépe v createComponent?

public function createComponentMyGrid() {
	$productId=$this->getParameter('id');
	$grid=$this->myGridFactory->create($productId);

	return $grid;
}

a naplňovat daný parametr tady???

nebo opět úplně jinak?? :)

tady budou asi fungovat obě metody, ale nevím, která by se správně měla používat…

opět často používané na stránce s ajaxovými požadavky, takže přímo v action asi použito víckrát (naštěstí už ale nevykonává nic v db)

díky za cenné rady ;)

Editoval sevca79 (5. 3. 2018 11:38)

CZechBoY
Člen | 3608
+
+1
-
  1. klidně můžeš zavolat $form->setDefaults($vychoziData) v createComponent
  2. do továrny určitě nepředávej nějaký ID, co se mění pro různé instance vytvořené továrnou; radši to id předej přímo metody jak to děláš v tom createComponent