Šablona a layout – renderování v opačném pořadí

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

Co kdyby až případné rozšíření bylo s mřížkou?

jasir
Člen | 746
+
0
-

Možná bych zrušil (používá to někdo?) zachytávání do proměnné přes {block $prom}...{/block}. Dá se to myslím řešit obecněji přes modifikátor, tj. {block|capture:$prom}...{/block}. Nebo přidat srozumitelnější {capture $prom}...{/capture}.

Jsem pro přidání {capture $variable}...{/capture}. Odstraněním této (nepříliš využívané?) funkčnosti z {block} dojde k větší přehlednosti kódu. {block} se stává základním stavebním kamenem šablon a layoutů a tak je nežádoucí mít v šabloně použití bloků pro dvě moc nesouvisející funkcionality.

jasir
Člen | 746
+
0
-

V další revizi bude {extends '@layout.phtml'} automatické a nepovinné, tj. pokud bude existovat layout, automaticky se bude extendovat. Tedy jestli to uživatel nepřebije pomocí vlastní direktivy {extends neco-jineho}. Tím vlastně ztrácí na důležitosti metoda setLayout(), respektive její použití se přesune tam kam patří, do šablony.

Tohle vypadá úplně skvěle. Přesun ovládání layoutu do šablon je prostě pecka :) Přesto mám ještě otázku k setLayout(). Předpokládám, že funkčnost bude taková, že pokud v Presenteru budu mít:

<?php
$this->setLayout('@mujlayout.phtml');
?>

Dojde k automatickému extendování na tento layout @mujlayout.phtml → tedy automatické bude {extends $presenter->getLayout()}, nikoliv na specifické
{extends '@layout.phtml'}?

Editoval jasir (5. 5. 2009 10:35)

romansklenar
Člen | 655
+
0
-

Jojo {capture $prom}...{/capture} zní lépe.

Patrik Votoček
Člen | 2221
+
0
-

David Grudl napsal(a):

Ano, alespoň v tuto chvíli tomu tak je.

V další revizi bude {extends '@layout.phtml'} automatické a nepovinné, tj. pokud bude existovat layout, automaticky se bude extendovat. Tedy jestli to uživatel nepřebije pomocí vlastní direktivy {extends neco-jineho}. Tím vlastně ztrácí na důležitosti metoda setLayout(), respektive její použití se přesune tam kam patří, do šablony.

Super

David Grudl napsal(a):

Možná bych zrušil (používá to někdo?) zachytávání do proměnné přes {block $prom}...{/block}. Dá se to myslím řešit obecněji přes modifikátor, tj. {block|capture:$prom}...{/block}. Nebo přidat srozumitelnější {capture $prom}...{/capture}.

To tam fakt je? To jsem nevěděl. Njn to je ta nedokonala dokumentace… :-(

Btw ta další revize bude kdy?

Honza Marek
Člen | 1664
+
0
-

No tohle zrovna v dokumentaci je…

Patrik Votoček
Člen | 2221
+
0
-

jasir napsal(a):

V další revizi bude {extends '@layout.phtml'} automatické a nepovinné, tj. pokud bude existovat layout, automaticky se bude extendovat. Tedy jestli to uživatel nepřebije pomocí vlastní direktivy {extends neco-jineho}. Tím vlastně ztrácí na důležitosti metoda setLayout(), respektive její použití se přesune tam kam patří, do šablony.

Tohle vypadá úplně skvěle. Přesun ovládání layoutu do šablon je prostě pecka :) Přesto mám ještě otázku k setLayout(). Předpokládám, že funkčnost bude taková, že pokud v Presenteru budu mít:

<?php
$this->setLayout('@mujlayout.phtml');
?>

Dojde k automatickému extendování na tento layout @mujlayout.phtml → tedy automatické bude {extends $presenter->getLayout()}, nikoliv na specifické
{extends '@layout.phtml'}?

V to doufám taky… :-)

Patrik Votoček
Člen | 2221
+
0
-

Honza M. napsal(a):

No tohle zrovna v dokumentaci je…

Měl bych se jít vážně vyspat protože už jsem asi vážně slepej… :-( Sem si toho nevšiml… :-(

mancze
Člen | 58
+
0
-

romansklenar napsal(a):

Jojo {capture $prom}...{/capture} zní lépe.

Nejlíp mi zní {assign $prom}...{/assign}; samozřejmě se zachováním short-verze {assign $prom ...}. Proč mít dva příkazy na jedno a to samé?

Editoval mancze (5. 5. 2009 20:58)

Honza Marek
Člen | 1664
+
0
-

Assign je normální přiřazení do proměnné a assign vypsání výstupu a jeho zachycení. Nemyslim si, že je to to samé…

xificurk
Člen | 121
+
0
-

Honza M. napsal(a):

Assign je normální přiřazení do proměnné a assign vypsání výstupu a jeho zachycení. Nemyslim si, že je to to samé…

Otázka je, zda právě toto chování nezměnit – přijde mi, že buď potřebuju blok zachytit do proměnné a dál s tím pracovat, nebo blok vypsat. Nedokážu si představit situaci, kdy by bylo potřeba obojí najednou (leda tak nějaké kešování, ale to by se imho mělo řešit jinak).

mancze
Člen | 58
+
0
-

Numůžu si pomoct, ale párový assign bych prostě viděl tak trochu jako xml-like assign. Nedělá nic jiného, než proměnné nastaví hodnotu rovnou vnitřku bloku (pravda, zpracovaného). Pořád v tom vidím zjednodušení v tom, že bude o blok k pamatování míň.

{assign $var 'foobar'}

{assign $var}foobar{/assign}

{assign $var}{if $expression}foo{else /}bar{/if}{/assign}
amsys
Člen | 20
+
0
-

David Grudl napsal(a):

Průzkum terénu

v době kdy jsem si hrál s djangem jsem narazil na pythoní template systém genshi, zde mě zaujaly tzv.
match templates odkaz, což zneužívá XPath, no pokud někdo pracoval s XSL transformacemi tak se mu to bude líbit :-s (zbytek genshi mi přišel ošklivej)

martin.doubravsky
Člen | 7
+
0
-

Zdravím,

i přes přečtení fóra u nette postrádám jednu velmi zásadní funkci. Tou je v Djangu {{ block.super }}.

Jednoduše: {{ block.super }} returns value of the most remote ancestor
popis funkčnosti viz http://code.djangoproject.com/ticket/501

Sice jsem nalezl určité náznaky jak si sáhnout na rodiče, ale vždy šlo o přepsání rodiče, nikoliv o jeho doplňení/rozšíření.

Při stavbě webu využívající dědičnosti šablon je tato funkce podstatná a nenahraditelná.

Dejte mi prosím vědět, zda podobná funkce již existuje či bude implementována. Velmi to ocením.

Hezký den,
Martin Doubravský

Patrik Votoček
Člen | 2221
+
0
-

Mělo by to fungovat takto:
Template A.phtml:

{block #abc}A{/block}

Template B.phtml:

{extends "A.phtml"}

{block #abc}{include #parent}A{/block}

Editoval vrtak-cz (8. 6. 2009 18:15)

martin.doubravsky
Člen | 7
+
0
-

diky za rychlou odpoved.

mrknete na http://www.pluf.org/ – php obdoba djanga (jak se na strankach zminuji), zda se ze by to mohl byt solidni projekt..

Ondřej Mirtes
Člen | 1536
+
0
-

Jaká je aktuální situace okolo těchto nových šablon? Dostal jsem se na jednom webu do fáze, kdy by se mi hodně hodily a nerad bych to stavěl na něčem, co možná dozná změn. A jak jsem to zkoušel, tak mi ani s, ani bez zavináčů, nezafungovaly AJAX snippety. Takže se nemůžu dočkat :)

Bude se tedy někde něco měnit nebo už jsou ve finální fázi?

PetrP
Člen | 587
+
0
-

LastHunter napsal(a):

Bude se tedy někde něco měnit nebo už jsou ve finální fázi?

No na poslední sobotě říkal david že novou verzi má „napsanou: (nebo tak ňák)“ a jen jí comitne, ale že ten týden, na to nebude mít čas. No a to už jsou 3 týdny. Takže jak tak hádám touhle dobou už možná uvažuje, že to začne psát… ;]

Nicméně mi to chápeme, jsou důležitější věci na práci: tequila, opájení se svou výjimečností, nebo psaní stovky příspěvků na fórum aby to vypadalo že nette má velkou komunitu ;]

(Možná to je ale už jinak kdo ví.)

Ondřej Mirtes
Člen | 1536
+
0
-

PetrP napsal(a):

LastHunter napsal(a):

Bude se tedy někde něco měnit nebo už jsou ve finální fázi?

No na poslední sobotě říkal david že novou verzi má „napsanou: (nebo tak ňák)“ a jen jí comitne, ale že ten týden, na to nebude mít čas. No a to už jsou 3 týdny. Takže jak tak hádám touhle dobou už možná uvažuje, že to začne psát… ;]

Nicméně mi to chápeme, jsou důležitější věci na práci: tequila, opájení se svou výjimečností, nebo psaní stovky příspěvků na fórum aby to vypadalo že nette má velkou komunitu ;]

(Možná to je ale už jinak kdo ví.)

Právě si taky pamatuju, že něco takového říkal, ale je to už dlouho, tak jsem si říkal, jestli mi něco neuniklo :)

Jan Jakeš
Člen | 177
+
0
-

A nemluvilo se o tom na této sobotě? Také by mě dost zajímalo, jak je to tedy s těmi novými šablonami :) A chtělo by to k nim něco napsat, v dokumentaci i fóru jsou jen jakési záblesky.

David Grudl
Nette Core | 8218
+
0
-

Bloky a dědění šablon by už mělo být plně funkční, používají to i příklady v distribuci. Testujte!

Zbývá pořešit jednu věc – a tou jsou snippety & AJAX. Řešení bych měl mít někdy v týdnu.

Inza
Člen | 330
+
0
-

Potřebuju aby někdo udělal nástřel kuchařky k těmto pokročilým šablonám – a nebo to zkusím napsat, ale někdo to musíte po mě opravit…páč určitě budu povídat kraviny páč jsem to ještě moc nepoužíval..

Pokročilé šablony nejsou zatím zdokumentovány vůbec a je to jedna z důležitých věcí co je třeba IMHO ASAP zdokumentovat… alespoň částečně a i třeba udělat beta doku verzi…

Ondřej Mirtes
Člen | 1536
+
0
-

Inza napsal(a):

Potřebuju aby někdo udělal nástřel kuchařky k těmto pokročilým šablonám – a nebo to zkusím napsat, ale někdo to musíte po mě opravit…páč určitě budu povídat kraviny páč jsem to ještě moc nepoužíval..

Pokročilé šablony nejsou zatím zdokumentovány vůbec a je to jedna z důležitých věcí co je třeba IMHO ASAP zdokumentovat… alespoň částečně a i třeba udělat beta doku verzi…

David sliboval před nějakou dobou článek o těchto šablonách na phpFashion, takže by se z něj dalo dobře vycházet. Ale kde nic, tu nic…

A navíc je IMHO pro Ajax stále potřeba zavináčová magie, čeká se na její odstranění.

David Grudl
Nette Core | 8218
+
0
-

jasir napsal(a):

Jsem pro přidání {capture $variable}...{/capture}. Odstraněním této (nepříliš využívané?) funkčnosti z {block} dojde k větší přehlednosti kódu. {block} se stává základním stavebním kamenem šablon a layoutů a tak je nežádoucí mít v šabloně použití bloků pro dvě moc nesouvisející funkcionality.

Stalo se. {block $variable} je deprecated a nahrazeno za {capture $variable}