Vlastní makra
Krátký návod, jak vytvořit vlastní makro a správně ho zaregistrovat. Možná sem přibydou i další makra.
dataStream helper n:makro
Máme-li binární data obrázku v proměnné, pak výsledek ve tvaru
<img src="data:image/jpeg;base64,..."> získáme přes
helper takto:
<img src={$imag|dataStream}>
{* Nové makro umožní takový zápis:*}
<img n:src=$imag>
Rozdíl v zápisu není velký, slouží to jako příklad. Makro se zaregistruje v presenteru takto:
public function templatePrepareFilters(Nette\Templating\Template $tpl) //datový typ je zde pro ilustraci
{
$tpl->registerFilter($latte = new Nette\Latte\Engine);
// dbá na nastavení xhtml = true/false v configu
// $tpl->registerFilter($latte = $this->getPresenter()->getContext()->nette->createLatte());
$set=\Nette\Latte\Macros\MacroSet::install($latte->compiler);
$set->addMacro('@src', 'echo \'src="\' . $template->dataStream(%node.word) . \'"\' ');
}
Nový zápis vytvoří ve zkompilované šabloně tento kód:
<img <?php echo 'src="' . $template->dataStream($imag) . '"' ?>/>
