„Legální“ používání základních latte filtrů mimo šablonu
- chikeet
- Člen | 160
Ahoj,
mám takový, spíš filosofický, problém. Občas potřebuju použít latte
filtr mimo šablonu, třeba v presenteru nebo v komponentě. Typicky proto,
že mám nějakou dataTable, která umožňuje transformaci dat před
zobrazením vlastním callbackem, a v tom callbacku pak použiju ten filtr pro
naformátování dat.
No a problém: třída Latte\Runtime\Filters
má anotaci
@internal
, což, pokud to správně chápu, naznačuje, že by se
neměla používat přímo. Takže, existuje nějaký „legální“
způsob, jak používat základní latte filtry mimo šablonu? Někdy
se to prostě hodí. Nechce se mi kvůli tomu znovu vynalézat kolo. Na druhou
stranu, pokud by se to z nějakého důvodu fakt dělat nemělo,
zajímá mě, proč (k jakým problémům to může
potenciálně vést).
Za osvětlení a další užitečné info k věci budu ráda.
Editoval chikeet (3. 3. 2016 17:15)
- Šaman
- Člen | 2659
Jaké filtry konkrétně? Ony většinou obalují buď základní php funkce,
nebo volají statickou metodu odněkud z Nette\Utils
. Takže by asi
bylo lepší volat přímo ony funkce, než mimo šablonu vytvářet závislost
na latte helperu. Stejně tak pokud si vytvářím vlastní filtr, tak mohu
vytvořit metodu v App\Utils
a helperem ji pak jen obalit.
Nette\Utils
, nebo App\Utils
jsou třeba pro třídy
modelů běžná závislost. Latte už nikoliv.
- chikeet
- Člen | 160
Šaman napsal(a):
Jaké filtry konkrétně? Ony většinou obalují buď základní php funkce, nebo volají statickou metodu odněkud z
Nette\Utils
. Takže by asi bylo lepší volat přímo ony funkce, než mimo šablonu vytvářet závislost na latte helperu. Stejně tak pokud si vytvářím vlastní filtr, tak mohu vytvořit metodu vApp\Utils
a helperem ji pak jen obalit.
Nette\Utils
, neboApp\Utils
jsou třeba pro třídy modelů běžná závislost. Latte už nikoliv.
Nejčastěji truncate
(kvůli zachovávání celých slov), pro
který tohle zrovna neplatí.
Na druhou stranu, když budu volat přímo ty funkce, které volají filtry,
tak musím hlídat konzistenci, protože předpokládám, že budu chtít mít
data transformovaná všude stejně a pokud se to změní v latte filtrech,
bude to třeba upravit i v App\Utils
(například). I když není
asi moc pravděpodobné, že by základní latte filtry procházely nějak
bouřlivým vývojem (přinejmenším v rámci vymezeném závislostí
v composeru) :-)
Editoval chikeet (3. 3. 2016 17:59)
- David Matějka
- Moderator | 6445
tak treba truncate je v Nette\Utils\Strings https://api.nette.org/…ngs.php.html#…, v tech latte filterech je nekolik tech filteru zkopirovanych z nette/utils, aby to na tom nemuselo zaviset
- ic
- Člen | 430
Taky jsem teď hledal, jak použít striptags
helper
v presenteru ( https://latte.nette.org/cs/filters#…
) a v ( https://api.nette.org/…ers.php.html#…
) je tato metoda značená jako private
a mám pocit, že
alternativu v jiné Nette knihovně striptags
nemá. Chce mi takto
nette naznačit, že mám prostě použít standardní php funkci
strip_tags()
?