Funkcje Latte
W szablonach możemy oprócz zwykłych funkcji PHP używać również tych dodatkowych.
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.