problem s includovanim bloku

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

Zdravím,

mam mensi problem s includovaním bloku. Vec sa ma nasledovne mam vseobecný @layout.phtml v adresari templates a potom su zlozky kde su kusky sablon prezenterov. V tychto zlozkach je subor menu.phtml v ktorom mam na zaciatku „{block menu}“ a nejake linky.
V layoute menu volam pomocou {include #menu}, ale vypisuje mi to Call to undefined block ‚menu‘. Ak sa to snazim nacitat cez {block menu}{/block} nezobrazi sa v menu zhola nic.

Ide o to ze kazdy prezenter by mal mat ine menu. Skusal som dat na zaciatok do menu.phtml makro {extends ../@layout.phtml} coz mi pride ako blbost kedze by sa mali stat potomkami defaultnej sablony automaticky ale ziadna zmena.

Nasiel som podobny thread https://forum.nette.org/…efined-block
Kde to chlapik vyriesil pomocou zavinacovej magie, ale ja som zatial len zaciatocnik v magii a tak som skusil
dat pred menu.phtml zavinac → @menu.pthml no bez uspechu :)

twtw
Člen | 7
+
0
-

Ahoj,
myslim, ze to nejde preto, ze vzdy sa ti vykresluje @layout a dana sablona akcie prezentera. Tym padom sa {block #menu} nema ako do @layout dostat. Napada ma spravit viacnasobnu dedicnost. Jednotlive sablony by tak rozsirovali menu a to by rozsirovalo @layout.

bojovyletoun
Člen | 667
+
0
-

není problém v Starých šablonách?
27. 9. 2009 14:44
Jirda
Člen

Místo: Karviná
Registrovaný: 30. 6. 2008
Příspěvky: 40
E-mail
Re: Undefined block

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.

Offline
Nahlásit

xrep
Člen | 51
+
0
-

public $oldLayoutMode = FALSE;

v base layout je…

arron
Člen | 464
+
0
-

{include #menu} totiz neznamena „sem vloz soubor menu.pthml“, ale „sem vloz blok #menu“. Ten pak musi byt nekde nadefinovany (bud uz primo v layoutu nebo casteji v sablone konkretni akce). Zkus misto toho napsat {include "menu.phtml"}.

xrep
Člen | 51
+
0
-

Ale blok som mal zadefinovany
No tak to momentalne riesim, lenze..
Mam dvakrat prezenter a jeden spolocny layout prenich.. Kazdy prezenter ma mat ine menu..
to znamena ze to potom musim opodmienkovat… pretoze ak tam narvem include „menu.phtml“ tak to hlada jedno konkretne menu priamo v Templates.. lenze ja potrebujem pre kazdy Presenter ine.. to nie je problem, da sa to spravit vlozenim premenej do sablony este v prezenteri a v layoute cez if volat prislusne menu.

Len som mal pocit ze to ide spravit elegantejsie, volanim bloku #menu.
Kazdopadne blok #menu bol zadefinovany v /Templates/<Prislusna_zlozka_presentera>/menu.phtml

Ked si teraz spomenul tie akcie, a vidim prispevok od twtw, tak naozaj nebude problem v tom
ze menu nie je povazovane ako akcia, ako akciu tam mam nejake zobrazovanie produktov.

Z tutu som pochopil ze ak dam pred danu sablonu zavinac do nazvu, nebere sa ako akcia. Ale bez vysledku.

OPenaz
Člen | 1
+
0
-

Tak na podobný problém jsem narazil taktéž. Mám klasický layout, který extenduji pomoci určité šablony (nazvěme ji šablona A). A do ní pomocí makra include načítám dalších několik souborů. Problém ovšem je, že se z šablony A ani z layoutu nedostanu k žádnému z bloků, které jsou definovány v includovaných souborech. Zkoušel jsem zřetězit pomocí dědičnosti jednotlivé soubory za sebe a pak je podědit do layoutu, ale výsledkem je prázdná stránka. Taktéž jsem zkusil soubory zřetězit mezi layoutem a šablonou A, ale bez výsledku. Řešením by bylo přesunutí obsahu includovaných souborů buďto do php nebo aspoň do šablony A, ale to není kýžený efekt. Soubory obsahují definici dat a struktur, která je shodná pro několik nesouvisejících šablon. Nedokázal by někdo poradit prosím?