Podpora shared view v Nette?

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

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

Lze to řešit pomocí dědičnosti. Konkrétní view bude dědit od shared view a ten od layoutu.

Mesiah
Člen | 240
+
0
-

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)