Template Filters
Filtr CurlyBracketsFilter
Zjednodušuje zápis šablon.
| Zápis v curlyBracket | PHP ekvivalent nebo význam |
|---|---|
{$variable} |
<?php echo htmlSpecialChars($variable) ?> |
{!$variable} |
<?php echo $variable ?> |
{=expression} |
<?php echo htmlSpecialChars(expression) ?> |
{!=expression} |
<?php echo expression ?> |
{*comment*} |
komentář, bude odstraněn |
{plink destination ...} |
<?php htmlSpecialChars($presenter->link(...)) ?> |
{link destination ...} |
control link |
{ajaxlink destination ...} |
ajax link |
{if ?} ... {/if} |
<?php if (?): ... endif; ?> |
{for ?} ... {/for} |
<?php for (?): ... endfor; ?> |
{foreach ?} ... {/foreach} |
<?php foreach (?): ... endforeach; ?> |
{include 'subdir/include1.phtml'} |
<?php include 'subdir/include1.phtml' ?> |
{?expression} |
evaluate PHP statement |
{_expression} |
echo with escaping and translation |
{snippet ?} ... {/snippet ?} |
control snippet |
{block |texy} … {/block} |
texy block |
{contentType ?} |
inserts HTTP header Content-Type |
{debugbreak} |
vloží breakpoint, funguje ale jen v některých IDE, např. PhpED |
Registrace:
$this->template->registerFilter('CurlyBracketsFilter::invoke');
Foreach cyklus
Foreach cyklus se chová jako běžný foreach v php
s několika rozšířeními.
Uvnitř cyklu je inicializovaná proměnná $iterator, díky
které můžete zjistit některé jinak těžko zjistitelné údaje o právě
probíhajícím cyklu.
Metody proměnné $iterator:
isFirst()– prochází se cyklem poprvé?isLast()– jde o poslední průchod?getCounter()– čítač průchodů cyklem počítaný od jedničkyisOdd()– jde o lichý průchod?isEven()– jde o sudý průchod?
Příklad:
{foreach $rows as $row}
{if $iterator->isFirst()}
<table>
{/if}
<tr id="row-{$iterator->getCounter()}">
<td>{$row->name}</td>
<td>{$row->email}</td>
</tr>
{if $iterator->isLast()}
</table>
{/if}
{/foreach}
Podpora helperů
Filtr curlyBrackets podporuje snadné volání helperů za použití této syntaxe:
<h1>{$heading|upper}</h1>
Je možno zřetězit více helperů (resp. modifikátorů):
<h1>{$heading|lower|capitalize}</h1>
Vykonají se v pořadí od levého k pravému.
Další parametry funkce helperu se zadávají za jménem helperu oddělené dvojtečkami.
<a href="...">{$linkText|truncate:20}</a>
Vlastní rozšíření CurlyBracketsFilter
Třída CurlyBracketsFilter definuje jednotlivé záměny ve statickém
asociativním poli $statements. Rozšířit je lze přidáním
nového prvku:
// v šabloně {podpis}
CurlyBracketsFilter::$statements["podpis"] = "Já";
// v šabloně {aktualniDatum}
CurlyBracketsFilter::$statements["aktualniDatum"] =
"<?php echo date('j. n. Y') ?>";
// v šabloně {icon delete}
CurlyBracketsFilter::$statements["icon"] =
'<img src="#.png" width="16" height="16" alt="#">';
Zachytávání výstupu do proměnné
Značky {block} se nově dají použít pro zachytávání
výstupu do proměnné:
{block $capture}
<ul>
<li>Hello World</li>
</ul>
{/block}
<p>Captured: {$capture}</p>
Zachytávání je přitom možné kombinovat i s modifikátory.
Filtr netteLinks
Umí přeložit adresy odkazů typu Presenter:view?arg=value na
běžnou adresu.
{* v šabloně *}
<a href="nette:Presenter:view?arg=value">Odkaz</a>
Registrace:
$this->template->registerFilter('TemplateFilters::netteLinks');
Filtr texyElements
Dovolí používat speciální <texy> značky.
{* v šabloně *}
<texy>Text **tučně**, "odkaz":www.example.com atd.</texy>
Aby tento filtr fungoval, musí být inicializovaná statická proměnná
$texy třídy TemplateFilters.
TemplateFilters::$texy = new Texy;
(poznámka: způsob registrace bude zřejmě změněn)
Registrace:
$this->template->registerFilter('TemplateFilters::texyElements');
Filtr phpRemove
Odstraní ze šablony veškerý PHP kód.
{* v šabloně *}
Hello <?php nebezpecnaFunkce() ?> World
Registrace:
$this->template->registerFilter('TemplateFilters::phpRemove');
Viz také:
