$ nebo # u proměnných šablon
- Martin Mates
- Člen | 179
Jednoduchá otázka. Nevěděl jsem, proč je někdy u proměnné $ a někdy #. Z toho co jsem zkoušel hledat si myslím, že # označuje blok. To bohužel přineslo více otázek než odpovědí. Je někde napsáno více o blocích než v Template Filters, tam jsem to moc nepochopil.
V novém skeletonu je v šabloně @layout {include #content}. Proč je tam teď # a ne dolar? V šabloně default je navíc {block #content}. Co to znamená?
Díky
//Editoval Tomik: v předmětu opraven $…
Editoval Martin Mates (28. 8. 2009 19:25)
- Panda
- Člen | 569
{block #content}
– blok, který se jmenuje
content
.
{include #content}
– vložení bloku, který se jmenuje
content
.
„Nové šablony“ umožňují „dědění bloků“, což ve své
podstatě znamená, že do jedné šablony je možné vkládat bloky z jiných
šablon, případně přepsat bloky stávající. Slouží na to makro
{extends}
, které říká, že tato šablona rozšiřuje šablonu,
která je v makru uvedena. Při zapnutí nových šablon (tedy při nastavení
Presenter::$oldLayoutMode = FALSE;
) automaticky šablona akce
(např. default.phtml
) rozšiřuje šablonu layoutu
(@layout.phtml
). Jeho neuvedení je v podstatě totéž, jako
kdybychom na začátek šablony zapsali
Pokud máme šablonu akce umístěnou například ve složce
app/templates/Homepage
a chceme, aby rozšiřovala šablonu
@layout2.phtml
umístěnou ve složce app/templates
,
můžeme to zapsat takto:
Přepisování bloků může vypadat nějak takto:
@layout.phtml
:
<presenter>/<action>.phtml
:
Pokud v šabloně akce nebude uveden blok header
, zobrazí se
v hlavičce stránky nápis „Hlavička“. Pokud tam však takový blok bude,
bude jeho výchozí obsah přepsán obsahem bloku z šablony akce, v našem
případě tedy „Hlavička podstránky“.
Jinak otazník jsem nikde neviděl, nespletl sis to například se symbolem
dolaru? Ve „starých šablonách“ se zapisovalo v layoutu
{include $content}
– v proměnné byl přiřazen objekt, který
reprezentoval šablonu akce (tedy například zmiňovaný
default.phtml
). Vkládal se vždy celý jeho obsah a nebylo možno
přímo z šablony zasahovat do jiných částí stránky.
- Ondřej Mirtes
- Člen | 1536
Otazníkem jsi myslel možná toto (je to také součástí „starého“ způsobu šablon):
Nový způsob šablon také dobře vysvětlil David na hradecké poslední sobotě. Nutno ale podotknout, že v nich stále dobře nefunguje AJAX (potřebuje zavináčovou magii).
- Patrik Votoček
- Člen | 2221
LastHunter napsal(a):
Snažím se zjistit kdy byla PS v Hradci ale nejak me to hlava nebere… (bylo to v pardubicích)
- Martin Mates
- Člen | 179
Díky moc, už je to jasné! Samozřejmě, že jsem myslel dolar. Omlouvám se za zmatky. Opravím post.
- Ondřej Mirtes
- Člen | 1536
vrtak-cz napsal(a):
LastHunter napsal(a):
Snažím se zjistit kdy byla PS v Hradci ale nejak me to hlava nebere… (bylo to v pardubicích)
Sorry, já tam nebyl a tyto dvě města snadno zaměním :)
- jarks
- Člen | 94
Zkoušel jsem migrovat starší projekt na novější Nette0.9.2-dev, 1025fea released on 2009–10–22 a zjistil jsem, že tady snad nikde není jasně řečeno, co v té prezentaci:
Jestliže chceme začít používat nové šablony, pak je třeba:
- v
@layout.phtml
zaměnit@{include $content}
za@{include #content}
(křížek místo dolaru) - ve všech šablonách, které mají povahu content, dát na
začátek
@{block #content}
Do té doby bude naše aplikace zobrazovat jen „prostředky“. Pak teprve se můžeme pustit do zkoušení nových vlastností.
- Ondřej Mirtes
- Člen | 1536
jarks napsal(a):
Zkoušel jsem migrovat starší projekt na novější Nette0.9.2-dev, 1025fea released on 2009–10–22 a zjistil jsem, že tady snad nikde není jasně řečeno, co v té prezentaci:
Jestliže chceme začít používat nové šablony, pak je třeba:
- v
@layout.phtml
zaměnit@{include $content}
za@{include #content}
(křížek místo dolaru)- ve všech šablonách, které mají povahu content, dát na začátek
@{block #content}
Do té doby bude naše aplikace zobrazovat jen „prostředky“. Pak teprve se můžeme pustit do zkoušení nových vlastností.
Něco je tady, ale není
to moc detailní.
BTW: Ty zavináče bys neměl dávat všude, jen tam, kde pracuješ se snippety
(AJAXem). Viz zavináčová
magie.
- jarks
- Člen | 94
Díky. Právě jsem dokoukal video z WebExpa (ovoce v košíku) a tam to v jednom místě skoro vypadá, že ty zavináče snad brzy zmizí.