Latte-Funktionen

In Templates können wir neben den üblichen PHP-Funktionen auch diese zusätzlichen Funktionen verwenden.

clamp begrenzt einen Wert auf einen bestimmten Bereich
divisibleBy prüft, ob eine Variable durch eine Zahl teilbar ist
even prüft, ob eine gegebene Zahl gerade ist
first gibt das erste Element eines Arrays oder das erste Zeichen einer Zeichenkette zurück
group gruppiert Daten nach verschiedenen Kriterien
hasBlock prüft die Existenz eines Blocks
last gibt das letzte Element eines Arrays oder das letzte Zeichen einer Zeichenkette zurück
odd prüft, ob eine gegebene Zahl ungerade ist
slice extrahiert einen Teil eines Arrays oder einer Zeichenkette

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}

Benutzerdefinierte Funktionen können auf diese Weise registriert werden:

$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 inklusiven Bereich von min und max.

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

Siehe auch der 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 eine gegebene Zahl gerade ist.

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

first (string|iterable $value)mixed

Gibt das erste Element eines Arrays oder das erste Zeichen einer Zeichenkette 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)array

Die Funktion gruppiert Daten nach verschiedenen Kriterien.

In diesem Beispiel werden die Zeilen in der Tabelle nach der Spalte categoryId gruppiert. Die Ausgabe ist ein Array von Arrays, wobei der Schlüssel der Wert in der Spalte categoryId ist. Lesen Sie die detaillierte Anleitung.

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

Siehe auch der Filter group.

hasBlock (string $name): bool

Prüft, ob ein Block mit dem angegebenen Namen existiert:

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

Siehe auch Überprüfung der Existenz von Blöcken.

last (string|array $value)mixed

Gibt das letzte Element eines Arrays oder das letzte Zeichen einer Zeichenkette 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 eine gegebene Zahl ungerade ist.

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

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

Extrahiert einen Teil eines Arrays oder einer Zeichenkette.

{=slice('hallo', 1, 2)}           {* gibt 'al' aus *}
{=slice(['a', 'b', 'c'], 1, 2)}   {* gibt ['b', 'c'] aus *}

Die Funktion funktioniert wie die PHP-Funktion array_slice für Arrays oder mb_substr für Zeichenketten mit einem Fallback auf die Funktion iconv_substr im UTF-8-Modus.

Wenn start positiv ist, beginnt die Sequenz um diese Anzahl vom Anfang des Arrays/der Zeichenkette verschoben. Wenn es negativ ist, beginnt die Sequenz um so viel vom Ende verschoben.

Wenn der Parameter length angegeben ist und positiv ist, enthält die Sequenz so viele Elemente. Wenn dieser Funktion ein negativer Parameter length übergeben wird, enthält die Sequenz alle Elemente des ursprünglichen Arrays, beginnend bei der Position start und endend bei einer Position, die um length Elemente kleiner ist als das Ende des Arrays. Wenn Sie diesen Parameter nicht angeben, enthält die Sequenz alle Elemente des ursprünglichen Arrays, beginnend bei der Position start.

Standardmäßig ändert der Filter die Reihenfolge und setzt die Ganzzahl-Schlüssel des Arrays zurück. Dieses Verhalten kann durch Setzen von preserveKeys auf true geändert werden. Zeichenketten-Schlüssel bleiben immer erhalten, unabhängig von diesem Parameter.

Version: 3.0