Nette\Templates\Template
Třída Nette\Templates\Template zapouzdřuje
soubor se šablonou.
Základy
use Nette\Templates\Template;
$template = new Template;
// nastavíme cestu k souboru šablony
$template->setFile('template.phtml');
// nastavíme parametry
$template->hello = 'Hello World';
Příklad šablony:
<p><?php echo $hello ?></p>
A nakonec její vykreslení:
echo $template; // lze použít i $template->render();
Použití šablon samostatně bez MVP návrhu Nette Frameworku se dále věnuje samostatná stránka.
Filtry
Šablonu je možné předzpracovat pomocí jednoho či více filtrů, což jsou funkce, které dostanou jako parametr obsah šablony a vrátí ho v pozměněném stavu. Jako filtr lze zaregistrovat libovolný callback nebo anonymní funkci.
// Zaregistruje filtr, který nahradí v textu šablony všechny výskyty slova 'apple' slovem 'pizza'.
$template->registerFilter(function ($s) {
return str_replace('apple', 'pizza', $s);
});
Registrace filtrů v presenterech
Nejvhodnějším způsobem, jak zaregistrovat filtr v presenterech (resp. v
Controlech), je přepsání metody
templatePrepareFilters.
use Nette\Application\Presenter;
abstract class BasePresenter extends Presenter
{
...
public function templatePrepareFilters($template)
{
parent::templatePrepareFilters($template); // zaregistruje výchozí filtr (Latte)
$template->registerFilter('apple2pizza'); // předpokládá definovanou funkci apple2pizza
}
...
}
Přímo v distribuci frameworku je obsaženo několik standardních filtrů, přičemž nejvýznamnější z nich je Latte filter.
Helpery
Do šablon je možné zaregistrovat pomocné funkce, tzv. helpery. Jako helper lze zaregistrovat libovolný callback nebo anonymní funkci.
Registrace helperu:
$template->registerHelper('shortify', function ($s) {
return mb_substr($s, 0, 6);
});
Použití helperu v šabloně:
<?php echo $template->shortify($text); // vypíše text zkrácený na text 6 písmen ?>
Helper může brát i více než jeden parametr.
$template->registerHelper('useTag', function ($s, $tag) {
return "<$tag>$s</$tag>";
});
<?php echo $template->useTag($text, 'strong'); // obalí text tagem <strong> ?>
Přečtěte si popis standardních helperů, které najdete přímo v distribuci, a o možnosti snazšího zápisu pomocí Latte filteru.
HelperLoader
Manuální registraci velkého množství helperů lze nahradit registrací jednoho či více HelperLoaderů. Jako HelperLoader lze zaregistrovat libovolný callback nebo anonymní funkci.
$template->registerHelperLoader('Helpers::loader');
HelperLoader dostane jako parametr název požadovaného helperu a vrací jeho callback nebo NULL v případě, že helper není schopnen dodat.
class Helpers
{
public static function loader($helper)
{
$callback = callback(__CLASS__, $helper);
if ($callback->isCallable()) {
return $callback;
}
}
public static function shortify($s)
{
return mb_substr($s, 0, 6);
}
}
Viz také:



