vlastní komponenta, kam s logikou
- colek
- Člen | 59
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();
}
- redhead
- Člen | 1313
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.