EN | CS | Přihlásit | Registrovat

Jak použít šablony samostatně?

Rádi byste využili šablonovacího systému Nette v jednoduché nebo již existující aplikaci?

Stáhněte a rozbalte si Nette Framework a zkopírujte adresář s frameworkem Nette do své aplikace, např. do složky libs/Nette. Dále si připravte adresář pro dočasné soubory, například temp. Ujistěte se (hlavně na serveru), že do adresáře lze zapisovat.

A nyní ve svém kódu můžete použít šablonovací systém Nette. Nejprve ukázka pro „prefixed“ verzi frameworku:

// načteme framework
require_once 'libs/Nette/loader.php';

// volitené, pro šikovnější ladění aplikace
Debug::enable();

// povinné - nastavíme cestu k dočasnému adresáři (nejlépe jako absolutní cestu)
Environment::setVariable('tempDir', dirname(__FILE__) . '/temp');

$template = new Template;
// následující kroky, až do renderování, mohou být uvedeny v libovolném pořadí

// zaregistrujeme filtr CurlyBracketsFilter, který umožní používat syntax jako {if} ... {/if}, {foreach} ...
$template->registerFilter('CurlyBracketsFilter::invoke');

// zaregistujeme tzv. helpery, který bude escapovat HTML znaky
$template->registerHelper('escape', 'TemplateHelpers::escapeHtml');
$template->registerHelper('escapeJs', 'TemplateHelpers::escapeJs');
$template->registerHelper('escapeCss', 'TemplateHelpers::escapeCss');


// určíme soubor se šablonou
$template->setFile('sablona.phtml');

// předáme ji parametry
$template->name = 'Jack';
$template->people = array('John', 'Mary', 'Paul');

// a vyrenderujeme
$template->render();

Jak může vypadat soubor se šablonou (sablona.phtml):

<h1>Hello {$name}</h1>

<ul>
{foreach $people as $person}
<li>{$person}</li>
{/foreach}
</ul>

V cyklech {foreach} lze také využít magickou proměnnou $iterator:

{foreach $people as $person}
<p id="item{$iterator->getCounter()}">{$person}</p>

{if !$iterator->isLast()}
<hr />
{/if}
{/foreach}

Podrobnější informace o syntaxi a proměnné $iterator najdete na stránce Template filters.

V samotné šabloně je lepší se vyvarovat používání PHP. Pokud bychom chtěli třeba volat funkci str_pad pro zarovnávní řetězce na zadaný počet míst, bude lepší využít helper:

// název funkce je libovolný
function justifyHelper($s, $length = 3)
{
return str_pad($s, $length, ' ', STR_PAD_LEFT);
}

// a zaregistrujeme jej do šablony pod názvem 'justify' (vložte do předchozího kódu)
$template->registerHelper('justify', 'justifyHelper');

V šabloně jej použijeme takto:

{foreach $people as $person}
<li>{$person|justify}</li>
{/foreach}

Přičemž můžeme předat navíc parameter (bude předán jako druhý argument funkci justifyHelper):

<li>{$person|justify:10}</li>

Za sebe můžeme dokonce naskládat více helperů, např {$person|lower|justify}.


Login to submit a comment