Funkcje Latte

W szablonach możemy oprócz zwykłych funkcji PHP używać również tych dodatkowych.

clamp ogranicza wartość do danego zakresu
divisibleBy sprawdza, czy zmienna jest podzielna przez liczbę
even sprawdza, czy podana liczba jest parzysta
first zwraca pierwszy element tablicy lub znak ciągu
group grupuje dane według różnych kryteriów
hasBlock sprawdza istnienie bloku
last zwraca ostatni element tablicy lub znak ciągu
odd sprawdza, czy podana liczba jest nieparzysta
slice wyodrębnia część tablicy lub ciągu

Użycie

Funkcje używane są tak samo jak zwykłe funkcje PHP i można ich używać we wszystkich wyrażeniach:

<p>{clamp($num, 1, 100)}</p>

{if odd($num)} ... {/if}

Funkcje niestandardowe można rejestrować w ten sposób:

$latte = new Latte\Engine;
$latte->addFunction('shortify', fn(string $s, int $len = 10) => mb_substr($s, 0, $len));

W szablonie wywołuje się je w następujący sposób:

<p>{shortify($text)}</p>
<p>{shortify($text, 100)}</p>

Funkcje

clamp (int|float $value, int|float $min, int|float $max): int|float

Ogranicza wartość do podanego zakresu włącznie min i max.

{=clamp($level, 0, 255)}

Zobacz także filtr clamp.

divisibleBy (int $value, int $by)bool

Sprawdza, czy zmienna jest podzielna przez liczbę.

{if divisibleBy($num, 5)} ... {/if}

even (int $value): bool

Sprawdza, czy podana liczba jest parzysta.

{if even($num)} ... {/if}

first (string|iterable $value)mixed

Zwraca pierwszy element tablicy lub znak ciągu:

{=first([1, 2, 3, 4])}    {* wyświetla 1 *}
{=first('abcd')}          {* wyświetla 'a' *}

Zobacz także last, filtr first.

group (iterable $data, string|int|\Closure $by)array

Funkcja grupuje dane według różnych kryteriów.

W tym przykładzie wiersze w tabeli są grupowane według kolumny categoryId. Wyjściem jest tablica tablic, gdzie kluczem jest wartość w kolumnie categoryId. Przeczytaj szczegółowy przewodnik.

{foreach group($items, categoryId) as $categoryId => $categoryItems}
    <ul>
        {foreach $categoryItems as $item}
            <li>{$item->name}</li>
        {/foreach}
    </ul>
{/foreach}

Zobacz także filtr group.

hasBlock (string $name): bool

Sprawdza, czy blok o podanej nazwie istnieje:

{if hasBlock(header)} ... {/if}

Zobacz także sprawdzanie istnienia bloków.

last (string|array $value)mixed

Zwraca ostatni element tablicy lub znak ciągu:

{=last([1, 2, 3, 4])}    {* wyświetla 4 *}
{=last('abcd')}          {* wyświetla 'd' *}

Zobacz także first, filtr last.

odd (int $value): bool

Sprawdza, czy podana liczba jest nieparzysta.

{if odd($num)} ... {/if}

slice (string|array $value, int $start, ?int $length=null, bool $preserveKeys=false): string|array

Wyodrębnia część tablicy lub ciągu.

{=slice('hello', 1, 2)}           {* wyświetla 'el' *}
{=slice(['a', 'b', 'c'], 1, 2)}   {* wyświetla ['b', 'c'] *}

Funkcja działa jak funkcja PHP array_slice dla tablic lub mb_substr dla ciągów z fallbackiem na funkcję iconv_substr w trybie UTF‑8.

Jeśli start jest dodatni, sekwencja zacznie się przesunięta o tę liczbę od początku tablicy/ciągu. Jeśli jest ujemny, sekwencja zacznie się przesunięta o tyle od końca.

Jeśli podany jest parametr length i jest dodatni, sekwencja będzie zawierać tyle elementów. Jeśli do tej funkcji zostanie przekazany ujemny parametr length, sekwencja będzie zawierać wszystkie elementy oryginalnej tablicy, zaczynając od pozycji start i kończąc na pozycji mniejszej o length elementów od końca tablicy. Jeśli ten parametr nie zostanie podany, sekwencja będzie zawierać wszystkie elementy oryginalnej tablicy, zaczynając od pozycji start.

Domyślnie filtr zmienia kolejność i resetuje klucze całkowite tablicy. To zachowanie można zmienić, ustawiając preserveKeys na true. Klucze ciągów są zawsze zachowywane, niezależnie od tego parametru.

wersja: 3.0