Latte-Funktionen

Zusätzlich zu den üblichen PHP-Funktionen können Sie in Templates auch die folgenden Funktionen verwenden.

clamp begrenzt einen Wert auf den angegebenen Bereich
divisibleBy prüft, ob eine Variable durch eine Zahl teilbar ist
even prüft, ob die angegebene Zahl gerade ist
first gibt das erste Element eines Arrays oder das erste Zeichen eines Strings zurück
group gruppiert Daten nach verschiedenen Kriterien
hasBlock erkennt die Existenz eines Blocks
hasTemplate erkennt die Existenz eines Templates
last gibt das letzte Element eines Arrays oder das letzte Zeichen eines Strings zurück
odd prüft, ob die angegebene Zahl ungerade ist
slice extrahiert einen Ausschnitt aus einem Array oder einem String

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.

Version: 3.x