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) a ujistěte se (hlavně na serveru), že do něj
lze zapisovat.
A nyní ve svém kódu můžete použít šablonovací systém Nette.
use Nette\Debug;
use Nette\Environment;
use Nette\Templates\Template;
use Nette\Templates\LatteFilter;
// načteme framework
require_once dirname(__FILE__) . '/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 Latte, který umožní používat syntax jako {if} ... {/if}, {foreach} ...
$template->registerFilter(new LatteFilter);
// zaregistujeme tzv. helpery, které budou escapovat HTML znaky
$template->registerHelper('escape', 'Nette\Templates\TemplateHelpers::escapeHtml');
$template->registerHelper('escapeJs', 'Nette\Templates\TemplateHelpers::escapeJs');
$template->registerHelper('escapeCss', 'Nette\Templates\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->counter}">{$person}</p>
{if !$iterator->last}
<hr />
{/if}
{/foreach}
Podrobnější informace o syntaxi a proměnné $iterator
najdete na stránce Latte
filter.
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}.




zacatecnik | 16. 2. 2010, 1:38 | comment
Místo $template->registerFilter(‚CurlyBracketsFilter::invoke‘); $template->registerFilter(new CurlyBracketsFilter);