Funkcja Latte
Oprócz zwykłych funkcji PHP, w szablonach możemy używać także następujących innych funkcji.
Korzystanie z
Funkcje są używane w taki sam sposób jak regularne funkcje PHP i mogą być używane we wszystkich wyrażeniach:
<p>{clamp($num, 1, 100)}</p>
{if odd($num)} ... {/if}
Funkcje niestandardowe można zarejestrować w następujący sposób:
$latte = new Latte\Engine;
$latte->addFunction('shortify', fn(string $s, int $len = 10) => mb_substr($s, 0, $len));
W szablonie jest on wtedy nazywany w następujący sposób:
<p>{shortify($text)}</p>
<p>{shortify($text, 100)}</p>
Funkcja
clamp(int|float $value, int|float $min, int|float $max): int|float
Ogranicza wartość do danego zakresu włączenia min i max.
{=clamp($level, 0, 255)}
Patrz również zacisk filtra.
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 łańcucha:
{=first([1, 2, 3, 4])} {* drukuje 1 *}
{=first('abcd')} {* drukuje 'a' *}
Zobacz także last, filter first.
group(iterable $data, string|int|\Closure $by): array
Ta funkcja grupuje dane według różnych kryteriów.
W tym przykładzie wiersze w tabeli są grupowane według kolumny categoryId
. Wynikiem jest tablica pól, w
której kluczem jest wartość w kolumnie categoryId
. Przeczytaj szczegółowe
instrukcje.
{foreach group($items, categoryId) as $categoryId => $categoryItems}
<ul>
{foreach $categoryItems as $item}
<li>{$item->name}</li>
{/foreach}
</ul>
{/foreach}
Zobacz także grupę filtrów.
hasBlock(string $name): bool
Sprawdza, czy blok o podanej nazwie istnieje:
{if hasBlock(header)} ... {/if}
Zobacz także sprawdzanie istnienia bloku.
last(string|array $value): mixed
Zwraca ostatni element tablicy lub znak łańcucha:
{=last([1, 2, 3, 4])} {* drukuje 4 *}
{=last('abcd')} {* drukuje 'd' *}
Zobacz także first, filter 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 łańcucha.
{=slice('hello', 1, 2)} {* drukuje 'el' *}
{=slice(['a', 'b', 'c'], 1, 2)} {* drukuje ['b', 'c'] *}
Filtr działa jak funkcja PHP array_slice
dla tablic lub mb_substr
dla łańcuchów z awaryjnym
przejściem do funkcji iconv_substr
w trybie UTF-8.
Jeśli start jest dodatni, to sekwencja rozpoczyna się z przesunięciem o ten numer od początku tablicy/łańcucha. Jeśli jest ujemny, to sekwencja zaczyna się z przesunięciem o tyle samo od końca.
Jeśli parametr długość jest podany i jest dodatni, to sekwencja będzie zawierała tyle elementów. Jeśli do funkcji zostanie przekazany ujemny parametr długości, sekwencja będzie zawierała wszystkie elementy oryginalnej tablicy, zaczynając od pozycji startowej i kończąc na pozycji mniejszej niż długość elementów od końca tablicy. Jeśli parametr ten nie zostanie przekazany, sekwencja będzie zawierała wszystkie elementy oryginalnej tablicy począwszy od pozycji startowej.
Domyślnie filtr zmienia kolejność i resetuje klucz całkowity tablicy. To zachowanie można zmienić ustawiając preserveKeys na true. Klucze łańcuchowe są zawsze zachowywane, niezależnie od tego parametru.