{include title} v komponente?
- Ja
- Člen | 260
Zdar,
delam takovou navigaci (ktera je resena komponentou) a vzdy posledni cast
navigace by mela odpovidat titulku stranky, ktery mam definovany v kazde
strance jako {block title}Titulek stranky{/block}.
Komponenta ale tento blok title nevidi. Ale samozrejme, pres promennou $presenter se na parent presenter dokazi dostat, takze bych se nejak k tomu bloku mohl prokousat. Nemate nekdo zkusenost?
- Šaman
- Člen | 2659
Jestli ti to stačí až při vykreslování, tj. v metodě
render()
komponenty a potažmo tedy i v její šabloně, tak
použij {control myComponent, $title}
a v komponentě
render($title)
. Samozřejmě si budeš muset taky upravit definici
titulku tak, aby byl v té proměnné a nejen jako blok.
třeba {var $title = "Titulek stranky"} … {block title}{$title}{/block}
- Ja
- Člen | 260
Tak jakoby staci, ale to uz rovnou to tam muzu vstrikavat necim jako $this[‚komponenta‘]->injectTitle(‚muj titulek‘);
takze jakoby toto by slo, ale uz do toho skoro zanasim dalsi necistoty, ktery bych tam radeji nemel, vytahnuti title z nadrazenejch sablon by mi prislo elegantni (jde-li teda se vubec pres ten presenter k nim nejak dostat)
- Šaman
- Člen | 2659
Právě že tohle je čistější. A pokud bys to potřeboval už pro běh té komponenty, pak to vstřiknout třeba v tovární metodě.
Co když nadřazená šablona nebude mít blok title
? V mé
ukáce je jasné API – metoda render
požaduje předat titulek.
Stejně tak, pokud budeš injectovat do nějaké setTitle
metody.
Ale když se budeš spoléhat na nadřazené šablony, tak už to nebude
samostatná komponenta.
- Ja
- Člen | 260
OK souhlasim,
tak co udelat kompromisoidni reseni typu – v nejakem afterRenderu napr
FrontPresenteru, od ktereho mi dedi presentery v public sekci, ten title ze
sablony ziskat a vstriknout ho komponente? Jde-li to?
Trochu ted zapasim s casem a nehodi se mi cely projekt prepsat, abych title poskytoval vsude te komponente rucne.