Undefined block

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

Ahoj,

snažím se použít block, ale laděnka mi stále hlásí:

Call to undefined block ‚#content‘.

V layoutu mám:

{if $contentStyle = 'col1'}
  {include '../contents/col1.phtml'}
{else}
  {include '../contents/col2.phtml'}
{/if}

V col1.phtml je:

<div class="col1">
{include #content}
</div>

A v šabloně, kterou mám načtenou je:

{block #content}
<h1>Ahoj</h1>
{/block}

Poprosil bych o radu. Díky za komentáře předem.

Patrik Votoček
Člen | 2221
+
0
-

zkus to {inlcude #content} nahradit za {block #content}{/block}

Jirda
Člen | 103
+
0
-

vrtak-cz napsal(a):

zkus to {inlcude #content} nahradit za {block #content}{/block}

takhle to nevyhodí chybu, ale taky to nenačte žádný obsah

Ještě dodám:

  • Apache/2.2.11 (Win32) DAV/2 mod_ssl/2.2.11 OpenSSL/0.9.8i PHP/5.2.9
  • Nette Framework 0.9 (revision c82239a released on 2009–08–17)

Editoval Jirda (26. 9. 2009 22:52)

Honza Kuchař
Člen | 1662
+
0
-

Mno nevím, zdá se, že šablony používáš nějak jinak, než jak byly vymyšleny. Podívej se do příkladů z Nette.

Jirda
Člen | 103
+
0
-

honzakuchar napsal(a):

Mno nevím, zdá se, že šablony používáš nějak jinak, než jak byly vymyšleny. Podívej se do příkladů z Nette.

Ja jsem totiz nikde nenasel priklad, jak resit co nejefektivneji a spravne situaci, kdy nemam jen nejakou jednoduchou stranku o jednom contentu.
Takhle mam col1 jako plny content a col2 jako content + nejaky pravy panel treba.
A je zrejme, ze col1 bude mit jinou stavbu stranky nez ccl2. Proto jsem to zkusil takhle, vytvoril jsem si dve sablony, kde kazda reprezentuje jeden typ contentu a pak je nastavuju podle toho, jak urcim v presenteru. Mno a obsah chci pak nacitat pres blocky.

Jako mozna jsem cely tenhle postup pojal nestastne, ale ja tyhlety veci jeste neznam. Je to pro me novy model prace, ktery postupne poznavam, takze pokud mi nekdo rekne, jak resit „vicecontentovy“ layout, tak bych byl velice rad.

Patrik Votoček
Člen | 2221
+
0
-

tak tohle bych řešil pomocí dvou rodičovských šablon… (jinak to co jsem psal predtim ani fungovat nemuze precejenom jsem to psal z PosledniSoboty po nějákém tom pivu… :-))

Edit: Nebo jeden layout u ktereho bude jak jsi ty psal ten praví slopec prázdný blok.

Editoval vrtak-cz (27. 9. 2009 5:28)

Ondřej Mirtes
Člen | 1536
+
0
-

Nové šablony už chtějí taky nějakou tu analýzu a návrh před samotným psaním, to, cos popsal (jestli jsem to pochopil), bych řešil, jak napsal vrtak-cz:

layout:

{include #content}

{block #sidebar}{/block} <!-- klidně s nějakými divy okolo -->

šablona 1 (bez sidebaru):

{block #content}

text

šablona 2 (se sidebarem – block #sidebar ovlivní obsah bloku v layoutu):

{block #sidebar}obsah sidebaru{/block}

{block #content}

text
Honza Kuchař
Člen | 1662
+
0
-

Když jsem testoval stare sablony, tak jsem dostal presne tuhle výjimku. Máš někde v presenteru – nejlépe v BasePresenteru tohle?

abstract class BasePresenter extends Presenter
{
	public $oldLayoutMode = FALSE;
}
Jirda
Člen | 103
+
0
-

honzakuchar napsal(a):

Když jsem testoval stare sablony, tak jsem dostal presne tuhle výjimku. Máš někde v presenteru – nejlépe v BasePresenteru tohle?

abstract class BasePresenter extends Presenter
{
	public $oldLayoutMode = FALSE;
}

V tom starem modelu, ktery jsem mel vyse, tohle nepomohlo. Ted, kdyz jsme zkusil ten zpusob s vice layouty, to s timhle nastaveni funguje, ale bez nej to nejde. Mozna by nebylo od veci to pripsat v dokumentaci. Pokud vim, tak je to v te casti, kde je naky povidani o znacce {assign}, ale u bloku ne.

Jeste jednou diky za pomoc.

Jirda
Člen | 103
+
0
-

Je ještě takový problém co se mi s tím objevil. Všechno je v pohodě jak má, jen se mi datagrid vykresluje ještě dřív, než sama stránka…

Takže výsledný kód pak vypadá nějak tak:

kod datagridu
<html>
<head>
...
</head>
<body>
<h1> Stranka </h1>
-- Zde by mel byt kod datagridu zhora, ale neni --
</body>
</html>

VYŘEŠENO
Sry, prisel jsem na to sam – zavinacova magie, pisu to sem, kdyby mel nekdo podobny problem no…

Editoval Jirda (27. 9. 2009 15:05)