Jeśli chcesz dodać do szablonu Twiga niestandardowe funkcje, filtry itp, musisz utworzyć własne rozszerzenie. Przed tym upewnij się, że Twoje rozszerzenie nie jest już zaimplementowane w standardzie Twiga. Pozwoli to uniknąć niepotrzebnych kolizji 😉

Aby korzystać z rozszerzeń Twiga musimy wpierw je zainstalować:

1. FUNKCJE

W pierwszym przykładzie dodamy funkcję, która będzie losować kolor w zapisie RGB (np: #c00d25). W Twigu jej postać będzie następująca:

W katalogu src/Twig/ tworzymy plik AppExtension.php i wklejamy do niego poniższą zawartość:

W metodzie randColor() użyłem dwóch funkcji znanych z języka PHP:

  • dechex(int $number) – zwróci ciąg znaków zawierający szesnastkową reprezentację argumentu $number,
  • rand(int $min, int $max) – wylosuje liczbę z podanego przedziału: 0x000000, 0xFFFFFF.

Aby nasza funkcja randColor była widoczna w szablonie musimy dopisać ją do metody getFunctions z klasy TwigFunction:

Nazwa color będzie używana przez nas w szablonie Twiga. Oczywiście możesz podać dowolną, inną nazwę. Na koniec, gdzieś w szablonie wstawiamy funkcję color() np:

Odśwież kilka razy stronę i podziwiaj efekt swojej pracy 😉

2. FILTRY

Zasada tworzenia filtrów jest podobna do funkcji. W tym przypadku musimy dołączyć klasę z filtrami use Twig\TwigFilter oraz dopisać filtr do funkcji getFilters(). Dla przykładu dodamy filtr, który pierwszą literę w tekście zamieni na duży znak (Uppercase):

Zastosowanie filtra w szablonie:

Efekt będzie taki:

Więcej o rozszerzeniach Twiga przeczytasz na stronie dokumentacji.