Šablony, curlyBrackets a Web::Html
- stpnkcrk
- Generous Backer | 190
Ahoj,
snažím se nějak skloubit tyto tři věci dohromady a chci v šablonách používat Web::Html, ale nějak se mi to nedaří.
Například kód
{? $changeStatus = Html::el('a');}
{if $comment->status == 'p'}
{? $changeStatus->href("{link deleteComment! $comment->comment_id}"); }
{? $changeStatus->setText('smazat komentář');
{else}
{? $changeStatus->href("{link publishComment! $comment->comment_id}"); }
{? $changeStatus->setText('publikovat komentář');
{/if}
- {$changeStatus}
mi nevyhodí to, co bych si představoval – nelíbí se mu zápis curlyBrackets a vyhodí
Parse error: syntax error, unexpected '}' in /home/www/default/nette/stepankocourek.cz/app/temp/cache-Nette.Template%00c35dc6a0b8931fa8585142d0a2d6a025.list.phtml on line 16
(ve vygenerovaném PHP v /app/temp to udělá)
<?php
$changeStatus->href("{link deleteComment! $comment->comment_id ?>"); }
?>
Nikde jsem žádné příklady použití Html v šablonách nenašel, proto
se obracím sem.
Máte někdo nějaký nápad?
- PetrP
- Člen | 587
To by zase mělo fungovat takto:
$template->date($promenna)
edit:
V čem je vlastně výhoda použitý Nette\Html před rovnou html
v šablonách?
{if $comment->status == 'p'}
<a href="{link deleteComment! $comment->comment_id}">smazat komentář</a>
{else}
<a href="{link publishComment! $comment->comment_id}">publikovat komentář</a>
{endif}
Editoval PetrP (25. 12. 2008 15:34)
- _Martin_
- Generous Backer | 679
skocourek napsal(a):
(edit)
No jo, v tom případě se ale nedá používat v Web::Html fičurek jako jsou helpery {$promenna|date} a tak dále, že? To není zrovna pohodlné. Lze to vyřešit nějak jinak?
A je nutné používat v šablonách Web::Html? Přijde mi, že je to v tomto případě zcela zbytečné a navíc práci komplikující.
Nevyužil by jsi více takovýto způsob?
{if $comment->status == 'p'}
- <a href="{link deleteComment! $comment->comment_id}">smazat komentář</a>
{else}
- <a href="{link publishComment! $comment->comment_id}">publikovat komentář</a>
{/if}
- David Grudl
- Nette Core | 8218
25. prosince a vy tu řešíte curlyBrackets? ;)
curlyBrackets řadu věcí zjednodušují tak, že použití Web\Html situaci spíš komplikuje. Ale jsou případy, kdy by se Html hodilo, například při zapisování atributů. Tohle není úplně ono:
<a href="xxx"{if $level==0} class="top"{/if}{if $color || $background} style="{if $color}color:{$color};{/if}{if $background}background:{$background}{/if}"{/if}>
Zkusil jsem experimentálně přidat tohle (výsledek je ekvivalentní):
<a href="xxx" {attr class('top', $level==0) style('color', $color) style('background', $background)}>
Což se vlastně přeloží jako
echo Html::el()->class('top', $level==0)->style('color', $color)->style('background', $background);
- veena
- Člen | 98
David Grudl napsal(a):
Zkusil jsem experimentálně přidat tohle (výsledek je ekvivalentní):
<a href="xxx" {attr class('top', $level==0) style('color', $color) style('background', $background)}>
Což se vlastně přeloží jako
echo Html::el()->class('top', $level==0)->style('color', $color)->style('background', $background);
To chválim :-)
Třeba se časem dostanem k mému vysněnému ideálu templatovacího jazyka, který je jako obyčejné html, ale zároveň trošičku objektovější. Že mu bude rozumět kodér a syntax higlihting v editoru a zároveň nebude štvát programátora.
Tzn třeba to psaní html tagů bez ukončení a jejich zanoření by bylo dáno jen správným odsazením html tagů.
Takže {if tenhle_div_zobrazit}<div>{/if}
by stačiló a
nemuselo by být někde v hloubi ještě
…
…
…
…
{if tenhle_div_zobrazit}</div>{/if}
- David Grudl
- Nette Core | 8218
Filtr je jakákoliv funkce nebo metoda, která má na vstupu řetězec (obsah šablony) a vrací řetězec (přefiltrovanou šablonu, tj. nějaký PHP soubor).