Nette Framework
  • Úvodní stránka
  • Download
  • Dokumentace
  • Fórum
  • Blog
  • Přispějte
  • Quick Start
    • Začínáme
    • Adresářová struktura
    • Vytvoření presenteru
    • Připojení šablony
    • Tvorba odkazů
    • Hezčí šablony
    • Zobrazení tabulky
    • Stránkování a řazení
    • Tvoříme komponentu
  • Nette
    • Základní třídy
    • Nette\Annotations
    • Nette\Component
    • Nette\Debug
      • Základy
      • Logování chyb
      • Firebug
    • Nette\Environment
    • Nette\Image
    • Nette\Object
    • Nette\String
  • Nette\Application
    • Application
    • AppForm
    • Control
    • Presenter
    • PresenterCompo­nent
    • PresenterRequest
    • Routování
    • MultiRouter
    • Route
    • SimpleRouter
  • Nette\Caching
  • Nette\Forms
  • Nette\IO\SafeS­tream
  • Nette\Loaders
  • Nette\Security
    • Bezpečnost aplikací
    • Identity
    • SimpleAuthenti­cator
    • Permission
    • Dynamická správa rolí a zdrojů
  • Nette\Templates
    • Template
    • Template Filters
    • Template Helpers
  • Nette\Web
    • Web
    • Ftp
    • Html
    • HttpRequest
    • HttpResponse
    • Session
    • User
Naposledy změněno 26. 12. 2008 Edituj Historie Poslední změny

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čky
  • isOdd() – 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é:

  • Nette\Templates\Tem­plateFilters API reference
  • Nette\Templates\Cur­lyBracketsFil­ter API reference
« Template Template Helpers »

Copyright © 2008, 2009 Nette Foundation

Nette Framework powered | dibi powered | Texy! powered | Institut Školení PHP