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)