Twig – filtry

W poprzednich artykułach poznałeś już czym jest Twig i jak budować funkcje, które możemy potem wykorzystywać w szablonach. Dzisiaj przyszedł czas na kolejny element twig – filtry. Po co nam one i czym różnią się od funkcji? To wszystko poniżej.

Przydatne natywne filtry

Filtry wykorzystujemy znacznie cześciej niż funkcje, przynajmniej ja tak mam. Dlaczego? Być może chodzi o to, że ich zadaniem jest zmodyfikowanie formy treści lub samej treści do wyświetlenia. Na co dzień powinniśmy się starać oddzielać logikę frontową od backendowej. Stąd jeśli dobrze oddzielimy te konteksty znacznie częściej będziemy potrzebować czegoś co tylko modyfikuje w jakiś sposób dane przesłane na front niż czegoś co te dane złoży lub pobierze. Dlatego filtry będziecie spotykać częściej od funkcji jeśli dostarczycie sobie potrzebne dane już w kontrolerze.

Twig dostarcza nam już wielu ciekawych filtrów i ciężko było mi wymyślić coś co nie jest dostępne. Poniżej wybrałam trzy filtry, które najcześciej stosuję i uważam, że są bardzo przydatne, szczególnie w przenoszeniu danych do js’a.

Przykładowo:

  • json_encode

zmiana zawartość zmiennej twigowej w json, bardzo czesto przydaje się gdy chcemy przekazać zawartość zmiennej do funkcji js.

  • raw
  • escape

Filtr raw i escape są ze sobą ściśle związane. Gdy na zmienną nałożymy filtr espace jak sama nazwa wskazuje jej zawartość będzie escapowana czyli np. znaczniki html’owe będą wyświetlane jako tekst. Jeśli jednak zamiast escape nałożymy raw to zawartość zmiennej nie będzie escapowana. W dokumentacji określają ten filtr jako “oznaczenie danych jako bezpieczne” czyli takie, którym ufamy, że nie zawierają dziwnych rzeczy i spokojnie je renderujemy. Filtra raw używamy również zaraz po json_encode przy przekazywaniu zmiennej do js’a.

Twig – filtry, które zrobisz sam

Skoro już wiesz o co chodzi w filtrach to teraz stwórz je sam. Składania wygląda praktycznie identycznie jak w funkcjach. Najpierw w metodzie getFilters() deklarujemy wszystkie filtry jako new TwigFilter(). Następnie określamy w jaki sposób będziemy je wywoływać, a potem wskazujemy, która metoda ma być uruchamiana przy ich wykorzystaniu.

public function getFilters()
{
    return [
        new TwigFilter('truncate', [$this, 'truncate'])
    ];
}

public function truncate(string $text, int $length)
{
    return truncate($text, $length)
}

Poprzedni artykułSymfony Data Transformer
Następny artykułSymfony Param Converter

Podobne posty

Jestem programistką, która lubi mieć ręce pełne roboty. Do życia potrzebuje komputera z internetem i kubka gorącej kawy. Więcej na stronie o mnie.

Comments

ZOSTAW ODPOWIEDŹ

Please enter your comment!
Please enter your name here