LogicException Filter ‚myfilter‘ is not defined – chyba v dokumentaci Latte?
- m.brecher
- Generous Backer | 864
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.
- m.brecher
- Generous Backer | 864
Tak jsem objevil tohle https://doc.nette.org/…ocumentation takže to zkusím doplnit podle návodu – v češtině i angličtině.