Latte-Funktionen
Zusätzlich zu den üblichen PHP-Funktionen können Sie in Templates auch die folgenden Funktionen verwenden.
Verwendung
Funktionen werden genauso wie übliche PHP-Funktionen verwendet und können in allen Ausdrücken eingesetzt werden:
<p>{clamp($num, 1, 100)}</p>
{if odd($num)} ... {/if}
Eigene Funktionen lassen sich auf diese Weise registrieren:
$latte = new Latte\Engine;
$latte->addFunction('shortify', fn(string $s, int $len = 10) => mb_substr($s, 0, $len));
Im Template wird sie dann so aufgerufen:
<p>{shortify($text)}</p>
<p>{shortify($text, 100)}</p>
Funktionen
clamp(int|float $value, int|float $min, int|float $max): int|float
Begrenzt einen Wert auf den angegebenen Bereich zwischen min und max, jeweils einschließlich.
{=clamp($level, 0, 255)}
Siehe auch den Filter clamp.
divisibleBy(int $value, int $by): bool
Prüft, ob eine Variable durch eine Zahl teilbar ist.
{if divisibleBy($num, 5)} ... {/if}
even(int $value): bool
Prüft, ob die angegebene Zahl gerade ist.
{if even($num)} ... {/if}
first(string|iterable $value): mixed
Gibt das erste Element eines Arrays oder das erste Zeichen eines Strings zurück:
{=first([1, 2, 3, 4])} {* gibt 1 aus *}
{=first('abcd')} {* gibt 'a' aus *}
Siehe auch last(), Filter first.
group(iterable $data, string|int|\Closure $by): iterable
Diese Funktion gruppiert Daten nach verschiedenen Kriterien.
In diesem Beispiel werden die Zeilen der Tabelle nach der Spalte categoryId gruppiert. Die Ausgabe ist eine
iterierbare Struktur von Gruppen, wobei der Schlüssel der Wert in der Spalte categoryId ist. Lesen Sie die ausführliche Anleitung.
{foreach group($items, categoryId) as $categoryId => $categoryItems}
<ul>
{foreach $categoryItems as $item}
<li>{$item->name}</li>
{/foreach}
</ul>
{/foreach}
Siehe auch den Filter group.
hasBlock(string $name): bool
Prüft, ob ein Block mit dem angegebenen Namen existiert:
{if hasBlock(header)} ... {/if}
Siehe auch Prüfen der Existenz von Blöcken.
hasTemplate(string $name): bool
Ermittelt, ob ein Template mit dem angegebenen Namen existiert:
{if hasTemplate('foo.latte')} ... {/if}
last(string|array $value): mixed
Gibt das letzte Element eines Arrays oder das letzte Zeichen eines Strings zurück:
{=last([1, 2, 3, 4])} {* gibt 4 aus *}
{=last('abcd')} {* gibt 'd' aus *}
Siehe auch first(), Filter last.
odd(int $value): bool
Prüft, ob die angegebene Zahl ungerade ist.
{if odd($num)} ... {/if}
slice(string|iterable $value, int $start, ?int $length=null, bool $preserveKeys=false): string|array|\Generator
Extrahiert einen Ausschnitt aus einem Array, einem String oder einem Iterator.
{=slice('hello', 1, 2)} {* gibt 'el' aus *}
{=slice(['a', 'b', 'c'], 1, 2)} {* gibt ['b', 'c'] aus *}
Die Funktion arbeitet wie die PHP-Funktion array_slice für Arrays bzw. mb_substr für Strings, mit
einem Fallback auf die Funktion iconv_substr im UTF‑8-Modus. Ist die Eingabe ein allgemeiner Iterator, wird sie in
einen Generator umgewandelt, der die ausgeschnittenen Elemente liefert.
Ist start nicht negativ, beginnt die Sequenz an dieser Position vom Anfang des Arrays bzw. des Strings. Ist
start negativ, beginnt die Sequenz um so viele Elemente vor dem Ende.
Ist length angegeben und positiv, enthält die Sequenz höchstens so viele Elemente. Ist die Eingabe kürzer als
length, sind nur die verfügbaren Elemente enthalten. Ist length angegeben und negativ, endet die
Sequenz um so viele Elemente vor dem Ende der Eingabe. Wird es weggelassen, enthält die Sequenz alles von start bis
zum Ende der Eingabe.
Standardmäßig ordnet die Funktion die ganzzahligen Array-Schlüssel neu und setzt sie zurück. Dieses Verhalten lässt sich
durch Setzen von preserveKeys auf true ändern. String-Schlüssel bleiben unabhängig von diesem Parameter immer
erhalten.