Layout problem

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

Zdravim, zacinam sa pohravat s Nette, a neviem si poradit s layoutom.
Pouzivam BasePresenter s @layout.phtml,
v ktorom includujem DefaultPresenter s layoutom Default.@layout.phtml.
problem je v tom ze pri defaultnom zobrazeni sa zobrazí iba Default.@layout.phtml šablona.
obsah @layout.phtml sa vobec nezobrazi.

v obidvoch layoutoch includujem obsah takto: {include $content}

Patrik Votoček
Člen | 2221
+
0
-

To bude asi tím že pokud používáš Default.@layout.phtml tak se načte ten jako layout a ne @layout.phtml. Funguje to totiž tak že když máš layout pro presenter tak má přednost předobecným layoutem místo toho aby se navzájem „proincludovavaly“. Asi budeš muset použít v BasePresenteru Presenter->setLayout(…) a nastavit si nějákou template proměnou s cestou na aktuální „presenter layout“.

yogiman321
Člen | 11
+
0
-

Neexistuje nieco ako dedicnost layout-ov? Lebo som sa tu docital, ze kazdy presenter moze mat vlastny layout a ked mam v podstate BasePresenter ako nadradeny DefaultPresenteru tak by mala
existovat nejaka jednoducha moznost ako zdedit layout, ci nie?

Patrik Votoček
Člen | 2221
+
0
-

Co takhle zkusit hledat? https://forum.nette.org/…acnem-poradi

yogiman321
Člen | 11
+
0
-

Ano, tento Thread som uz pozeral a aj skusal doplnit {extends '@layout.phtml'} do Default.@layout.phtml, a v tomto pripade
uz zakladny layout includlo ale Default.@layout.phtml sa nepouzil. Tym padom mi vo vyslednej stranke chybaju prvky definovane v Default.@layout.phtml.

Patrik Votoček
Člen | 2221
+
0
-

jde o to že musíš v tomhle případě používat bloky. Příklad bude jednodušší na pochopení než kdybych to měl popisovat.

@layout.phtml

<html>
	<head>...</head>
	<body>
	<div id="logo"><h1>Můj web</h1></div>
	<div id="page">
		{block #page}
		<div id="content">
			{block #content}
			<h2>404</h2>
			<p>stránka nenalezena</p>
			{/block}
		</div>
		{/block}
	</body>
</html>

Default.@layout.phtml

{extends '@layout.phtml'}

{block #page}
<div id="menu">...</div>
<div id="content">
	{block #content}
	<h2>404</h2>
	<p>stránka nenalezena</p>
	{/block}
</div>
{/block}

Default.default.phtml

{extends 'Default.@layout.phtml'}

{block #content}
<h2>Default</h2>
<p>Tohle je zobrazení akce default v presenteru Default</p>
{/block}

Chápeš? Nebo potřebuješ něco dovysvětlit?

Editoval vrtak-cz (4. 6. 2009 13:14)

yogiman321
Člen | 11
+
0
-

Už v tom mám zdá sa áplne jasno, už mi to funguje ako má, Ďakujem za trpezlivosť.