Problém s továrničkou, která ovlivňuje layout

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

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
+
0
-

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í :).