Podpora shared view v Nette?
- Mesiah
- Člen | 240
Ahoj,
nadpis není moc vhodně zvolený, ale pokusím se nastínit o co mi jde…
V aplikaci mám @layout.latte a obsluhuji presenter Foo a akci Bar a
teďka když mám view foo.bar.latte, tam můžu použít makro {layout xyz} a
určit layout. Existuje také makro, které vloží/použije sdílení
(shared) view?
Můj use-case – zobrazuju data na hlavní stránce (Homepage:default) ale mám taky use case, kdy zobrazuju data na základě tagu (Data:tag) a nechci mít 2 stejná view, ale naopak mít jedno sdílené (shared) view, které bych použit v obou akcích presenteru na zobrazení dat.
O existenci setView() na presenteru vím, ale jde mi o to, abych mohl mít v tom shared view block, který bych v konkrétním view mohl doplněnovat…
- Jan Tvrdík
- Nette guru | 2595
Lze to řešit pomocí dědičnosti. Konkrétní view bude dědit od shared view a ten od layoutu.
- Mesiah
- Člen | 240
Jan Tvrdík napsal(a):
Lze to řešit pomocí dědičnosti. Konkrétní view bude dědit od shared view a ten od layoutu.
Díky za reakci, teďka to nemůžu otestovat a pohrát si, ale pokud to
chápu správně, tak by zápis vypadal cca takhle..? Tím se chci zeptat –
to, že jedno view dědí od druhého se definuje pomocí makra
{layout ...}
?
/@layout.latte
<!DOCTYPE html>
<html>
<head>
...
</head>
<body>
{include content}
</body>
</html>
/Shared/data.latte
{layout '@layout.latte'}
{block content}
<section>
{include innerContent}
</section>
<ul n:inner-foreach="$data as $item">
<li><a href="#">{$item->title}</a></li>
</ul>
{/block}
/Homepage/default
{layout 'Shared/data.latte'}
{block innerContent}
<h1>Default</h1>
{/block}
/Data/tag
{layout 'Shared/data.latte'}
{block innerContent}
<h1>Data</h1>
{/block}
E: tyo, myslím, že to co hledám je makro
{include 'Shared/data.latte'}
. Ještě to musím vyzkoušet, ale
podle dokumentace by to mohlo být přesně to co jsem hledal…
Editoval Mesiah (29. 5. 2014 12:19)