Latte-Funktionen
In Templates können wir neben den üblichen PHP-Funktionen auch diese zusätzlichen 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}
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.