„Legální“ používání základních latte filtrů mimo šablonu

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

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

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

Š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 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.

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

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

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() ?

CZechBoY
Člen | 3608
+
+1
-

@ic Přesně jak říká callback tak použij \strip_tags.

hrach
Člen | 1834
+
0
-

Ja pravidelne pouzivam escapeHtml.