Komponenta – použití ostatních render v komponentě
- Fires
- Člen | 97
Zdravím, přečetl jsem co se dalo, skouknul i nějaké videa jak používat komponenty ale furt v tom mam bordel :(
Chtěl jsem aplikaci rozdělit do komponent aby byla přehlednější. Potřeboval bych použít jiný render ve stejné komponentě. Příklad za vše:
class YkyloControlComponent extends \Nette\Application\UI\Control{
private $ykyloService;
public function __construct(\Projectglobe\Ykylo\YkyloService $ykyloService) {
$this->ykyloService = $ykyloService;
}
public function renderMap($ident){
$controlMap = $this->ykyloService->getControlMapByIdent($ident);
$this->template->controlMap = $controlMap;
$this->template->render(__DIR__.'/templates/controlMap.latte');
}
public function renderIcon($thing){
$this->template->controlThing = $thing;
$this->template->render(__DIR__.'/templates/thing_'.$thing->id_type.'.latte');
}
{* Latte template *}
{block content}
{$controlMap->map_code|noescape}
<!-- DRAGGABLE ICON -->
{foreach $controlMap->linkedControls as $mapIcon}
{control this:icon $mapIcon}
{/foreach}
<!-- DRAGGABLE ICON -->
Vyzkoušel jsem snad všechny možnosti jak zavolat {control this:icon $mapIcon} ve stejné komponentě ale nepřišel jsem na to jak :( nebo používám komponenty uplně špatně ?
- Martk
- Člen | 661
Neporadím ti konkrétně s tím co potřebuješ, nevím, jestli to jde. Můžeš si udělat znovupoužitelné komponenty Map a Icon a ty injectovat do komponenty YKyloControl a pak jen volat:
{block content}
<!-- DRAGGABLE ICON -->
{foreach $controlMap->linkedControls as $mapIcon}
{control icon $mapIcon}
{/foreach}