Vložení komponenty do šablony
- theacastus
- Člen | 81
Zdravím,
chci se zeptat jestli je možné (popř. jak) vložit komponentu do šablony.
Tj. když do @layout.latte
vložím
{control navbar}
například, bude to fungovat?
Podle toho co vím o komponentách je nutné do presenteru přidat metodu
createComponent**()
, takže by to mohlo jít obejít přes
BasePresenter a v šabloně mít {include něco}
a blok by vypadal
nějak takto:
{block menuBlock}
{control navbar}
{/block}
Přijde mi to krkolomné, ale nic lepší mě momentálně nenapadá…
Ještě jsem to neimplementoval, spíš tak přemýšlím co dál…
Chtěl bych mít na header (navbar) a footer nějakou komponentu, protože z
@layout.latte
je pak nakonec soubor se stovkami řádků a není to
přehledené…
Díky
- Ondřej Kubíček
- Člen | 494
přesně tak, v BasePresenteru vytvoříš
createComponentNavbar
komponentu a pak ji jen v layoutu zavoláš
{control navbar}
, nemusíš ji ani dávat do bloku, pokud ji
nechceš definovat jinde, než kde ji v layoutu zobrazíš
případně třeba si to ještě můžeš rozkouskovat do více souborů
třeba footer.latte a v layoutu jen includnout
{include footer.latte}
, ale to mi přijde trochu zbytečné, pokud
to už nepoužiješ jinde, záleží na tobě
- theacastus
- Člen | 81
@OndřejKubíček, protože chci mít footer a navbar napojený na DB a mít možnost jej nějak editovat mimo kód, rozhodně potřenuji komponentu, abych si mohl snadno předávat závislosti. Přecijen předávát si entiti manager do šablony jde narpsoto proti MVC (MVP) konceptu, kterého se nette drží :D
- Ondřej Kubíček
- Člen | 494
@theacastus chápu, klidně to můžeš mít nakombinované a tu control zavolat v tom includnutém footer, a tím jeden velký layout rozdrobíš na menší části