vlastní komponenta, kam s logikou

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

Ahoj,
měl bych dotaz ohledně „best practices“ při tvorbě vlastní komponenty. S Nette začínám, vlastně vůbec všeobecně začínám :)

Mám komponentu využívající ajax, něco jako kalendář událostí.

V šabloně KomponentaControll.phtml je pár cyklů for a podmínek.

Jde mi o soubor KomponentaControll.php – potřebuji komponentu zobrazit a překreslovat přes handleClick(). Celé to je napojeno na nějakou logiku, databázi a tak – ptám se kde to má správně být. Teď zobrazení provedu v konstruktoru, kde načtu výchozí data (dataload() ) a při překreslení zavolám metodu dataload znovu, s nějakými parametry.

Je to tak správně?

díky

	public function __construct()
	{
		parent::__construct();
	        $this->dataload();
	}

	private function dataload($a=0,$b=0){
...
	        $this->data = ... $a,$b
	        ...
	}



	public function handleClick($a, $b)
	{
$this->dataload($a,$b);

$this->invalidateControl('komponenta');
	}


	public function render()
	{
	        ....
$template->data  =  $this->data;
	$template->render();
	}
Mesiah
Člen | 240
+
0
-

jo. nebo nejede?
ps: nezapomen na @…

Editoval Mesiah (18. 9. 2010 1:34)

colek
Člen | 59
+
0
-

zavináč je myšlen v šabloně? jj to mám :)

Ale jede to, spíš jestli není nějaká „spešl“ funkce, co já vím.. loadData třeba :) začinám, radši se zeptám :)

redhead
Člen | 1313
+
0
-

Jedinou výtku bych viděl ve dvojím volání dataLoad() (v konstruktoru a pak v handle, když je volán signál). Proto bych přesunul volání v konstruktoru do metody render a obalil podmínkou pokud je $this->data prázdný. Nevím nakolik je operace dataLoad složitá, ale asi je zbytečné ji volat navíc.