Registrace automatického filtru

- Machy8
 - Člen | 59
 
Ahoj,
chtěl bych se optat, jak je možné v Nette volat v presenteru/configu filtr
automaticky před Latte bez pomoci {block |mujfiltr} atd. Našel jsem tuto
diskuzi (https://forum.nette.org/…ring-filters)
ale nějak se v tom ztrácím. Používám nette 2.3.
`
<?php
/*MujFiltr.php*/
class MujFiltr
{
	/* Uprav obsah, vrať*/
}
/*BasePresenter.php*/
abstract class BasePresenter extends Nette\Application\UI\Presenter
{
   /*
	* Nejdříve MujFiltr
	* Potom Latte
   */
}
?>
`
Děkuju za každou radu.
Editoval Machy8 (30. 9. 2015 23:34)

- Tomáš Votruba
 - Moderator | 1114
 
Ahoj,
buď to můžeš nahackovat do BasePresenteru nebo použít čistý přístup Zenify/ModularLatteFilters (vše je v krátkém README).
Editoval Tomáš Votruba (1. 10. 2015 13:25)

- David Matějka
 - Moderator | 6445
 
@TomášVotruba IMHO mysli neco jinyho :) registrace automatickeho filtru !== automaticka registrace filtru
@Machy8 chapu spravne, ze chces nejaky preprocessor na latte sablonu?
tedy ze ten .latte soubor nejak upravi pred tim, nez dojde k jeho
kompilaci?
Nebo chces vysledek sablony pote, co dojde k vykresleni html, projet nejakym
filtrem?
Muzes uvest konkretni priklad?

- Tomáš Votruba
 - Moderator | 1114
 
@DavidMatějka Ah, jasně, kdysi byly filtry a helpery, teď filter = helper.
Na to jsem také narážel, u haml filtru:
public function templatePrepareFilters($template)
{
    $template->registerFilter(new Nette\Templating\Filters\Haml);
    $template->registerFilter(new Nette\Latte\Engine);
}
					Editoval Tomáš Votruba (1. 10. 2015 13:59)

- David Matějka
 - Moderator | 6445
 
@TomášVotruba coz bohuzel s novym templating api snadno nejde :( jedine nastavenim vlastniho loaderu, jak je zmineno v tom odkazovanem threadu

- Machy8
 - Člen | 59
 
Jedná se o preprocessor na latte šablonu, který to upraví před tím, než dojde ke spuštění latte. Je potřeba nastavit vlastní loader, kterým se předají data do filtru. Ten je upraví, vrátí, a latte potom bude pracovat s takto upravenými daty. Zbytkovou práci vím ale u tohohle se ztrácím.

- David Matějka
 - Moderator | 6445
 
No jestli je to preprocessor na latte, tak to bude presne jako tady, v tom getContent akorat upravis obsah nacteneho latte souboru.

- David Matějka
 - Moderator | 6445
 
@Machy8 mozna by mohlo jit nastavit loader globalne:
services:
	myLoader: Foo\MyLoader
	latte.latteFactory:
		setup:
			- setLoader(@myLoader)