Založení vlastního makra ve verzi 2.3

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Miri
Člen | 117
+
0
-

Ahoj, podle tohoto návodu https://latte.nette.org/cs/ se snažím založit vlastní makro.

Trošku ale tápu, kde mám tento kus kódu použít. Zkoušel jsem ho dát do basePresenteru do metody action, ale vypsalo mi hlášku Unknown attribute n:try (při použítí n:try v latte)

Předem díky za odpověď
Míra

CZechBoY
Člen | 3608
+
0
-

Já jsem podědil tovární třídu Latte a přidal do ní třeba překladač a věci co se hodí (včetně maker).

latte.templateFactory:  App\Factory\MyTemplateFactory
Pavel Janda
Člen | 977
+
+11
-

Config:

latte:
	macros:
		- App\Utils\Macros

Macros.php:

<?php

namespace App\Utils;

use Latte;

class Macros extends Latte\Macros\MacroSet
{

	public static function install(Latte\Compiler $compiler)
	{
		$set = new static($compiler);

		$set->addMacro('currency', array($set, 'macroCurrency'));

		return $set;
	}


	public function macroCurrency(Latte\MacroNode $node, Latte\PhpWriter $writer)
	{
		return $writer->write(
			'echo \App\Utils\Macros::renderMacroCurrency(%node.word)'
		);
	}


	public static function renderMacroCurrency($currency = NULL)
	{
		$currency = $currency ?: self::$currency;

		switch ($currency) {
			case 'EUR': return "€";
			default: return 'Kč';
		}
	}

}

Editoval Pavel Janda (6. 12. 2015 23:53)

Miri
Člen | 117
+
+1
-

Výborně, díky za příklad