Registrace automatického filtru

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

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
+
0
-

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
+
0
-

@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
+
+1
-

@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
+
0
-

@TomášVotruba coz bohuzel s novym templating api snadno nejde :( jedine nastavenim vlastniho loaderu, jak je zmineno v tom odkazovanem threadu

Machy8
Člen | 59
+
0
-

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
+
+1
-

No jestli je to preprocessor na latte, tak to bude presne jako tady, v tom getContent akorat upravis obsah nacteneho latte souboru.

Machy8
Člen | 59
+
0
-

Trochu jsem to upravil a už mě to funguje. Děkuju za pomoc. Jen mě napadlo, jestli by totéž šlo v config.neon?

Editoval Machy8 (1. 10. 2015 15:28)

David Matějka
Moderator | 6445
+
+1
-

@Machy8 mozna by mohlo jit nastavit loader globalne:

services:
	myLoader: Foo\MyLoader
	latte.latteFactory:
		setup:
			- setLoader(@myLoader)