Problém s továrničkou, která ovlivňuje layout
- Krab
- Člen | 10
Mám určitou komponentu, ktera v sobě v případě že se vykresluje,
zahrnuje hlavní menu, které se jinak vykresluje v layoutu. Když tato
komponenta na stránce je, musím dát nějak vědět layoutu, že nemá
vykreslovat hlavní menu. Super hodilo by se nastavit nějaký flag
v továrniččce komponenty, protože když se komponenta bude vytvářet, tak
bude taky na webu.
Jenže tím, že jakoby až to volání {include #content} v layoutu způsobí
vytváření té komponenty (volání její továrničky) má za následek to,
že vlastně ta komponenta nastaví ten flag až po tom, co to v layoutu
testuju.
Něco jako
{if !$presenter->menuLinksIncluded}
vykreslitMenu
{/if}
{include #content} // až tady se vytvari komponenta, nastavujici menuLinksIncluded.
Potřeboval bych nějak předrenderovat ten block #content, nejde to nějak?
- Vojtěch Dobeš
- Gold Partner | 1316
Vyjdi od toho, kde se rozhoduje, jestli se ta komponenta vykreslí. Tuto
hodnotu si pak předej do šablony, a budeš ji mít k dispozici jak v blocku
#content
, tak v layoutu.
Pokud ale rozhoduje o svém vykreslení samotná ta komponenta, bude mnohem jednoduší vyčlenit tuto její rozhodovací logiku ven, opět aby byl výsledek dostupný přímo v šabloně a mohl se použív v onom ifu.
Určitě to bude snazší než se pokoušet ohnout šablonovací systém, aby změnil pořadí svého renderování :).