LogicException Filter ‚myfilter‘ is not defined – chyba v dokumentaci Latte ??

m.brecher
Backer | 58
+
+1
-

Podle dokumentace Latte jsem si zkusil zaregistroval filtr latte takto:

Citace z dokumentace https://latte.nette.org/cs/filters sekce Použití:

„Jako filtr lze do šablony zaregistrovat libovolný callback:“

$latte = new Latte\Engine;
$latte->addFilter('shortify', function (string $s, int $len = 10): string {
	return mb_substr($s, 0, $len);
});

Zkusil jsem tedy v presenteru toto (Latte\Engine jsem registroval ve službách) :

public function __construct( private Latte\Engine $latte )
{}

public function beforeRender()
{
   $this->latte->addFilter('myfilter', function($boo){return 'foo';});
}

Výsledek: LogicException Filter ‚myfilter‘ is not defined

Přitom když jsem dumpnul $this->latte tak ‚myfilter‘ tam zaregistrovaný byl.

Na stackoverflow.com jsem našel fungující řešení:

public function beforeRender()
{
   $this->template->addFilter('myfilter', function($boo){return 'foo';});
}

Toto řešení funguje.

Usoudil jsem, že příklad uvedený v dokumentaci je určen pro samostatné použití Latte, a v Nette nefunguje – zřejmě proto, že se vytvoří jiná instance Latte než kterou používá Nette pro vykreslování.

Navrhuji tedy dokumentaci doplnit o fungující ukázku registrace filtru latte přes $this->template.

David Grudl
Nette Core | 7568
+
0
-

Můžeš to tam prosím doplnit?

m.brecher
Backer | 58
+
0
-

David Grudl napsal(a):

Můžeš to tam prosím doplnit?

Rád to udělám, ale protože jsem nikdy do dokumentace nepřispíval tak bych potřeboval poradit.

m.brecher
Backer | 58
+
+3
-

Tak jsem objevil tohle https://nette.org/cs/writing takže to zkusím doplnit podle návodu – v češtině i angličtině.