Vytváření komponent s rozdílými šablonami
- akadlec
- Člen | 1326
Jaký je správný postup při vytváření komponent které mají dvě a více možných variant šablon?
Př. mám komponentu která mi vypisuje určité detaily o uživateli. Ale tyto detaily se mi vypisují na dvou místech, jedno je zkrácené info o uživateli a plné info. Takže komponenta má dvě šablony a to která se použije se rozhodne v render metodě. Na jedné stránce se komponenta vykreslí pomocí výchozí render funkce a na druhé stránce se vykreslí pomocí renderZkracena
Jenže problém mi nastal když jsem v té zkrácené kliknul na editaci položky, to se mě pak použila výchozí šablona, takže jsem si tam ještě musel přidat detekci na akci a podle toho když tak ještě upravit která šablona se použije, což asi není úplně moc košér.
Napadlo mě další řešení a to vytvořit si pro každou stránku vlastní komponentu {control userDetailsOverview} a {control userDetails} pro obě createComponent se použije stejná továrnička jen se ji předá info o tom zda zkrácený nebo plný výpis. Výhoda že nemusím detekovat šablonu podle akce, nevýhoda že je to přidání createComponent do presenteru.
Která cesta je správná?
- Eda
- Backer | 220
Jen bych třídě s komponentou přidal proměnnou
public $renderOverview = false;
a tu bych pak následně v akci
presenteru nastavil, v té druhé pak ne:
// v akci...
$this['userDetail']->renderOverview = true;
V render funkci ve třídě pro komponentu bych se pak rozhodoval na základě té proměnné, jakou zvolím šablonu.
- Jan Suchánek
- Člen | 404
@Eda: je to vlastně podobné jako v todo, jen by mě zajímalo zda není jednodušší rovnou setovat název šablony, šel by měninit signálem, ale i setovat z presenteru atp.
Editoval jenicek (18. 12. 2013 21:27)