Fonctions Latte
Outre les fonctions PHP courantes, vous pouvez aussi utiliser ces fonctions dans les templates.
Utilisation
Les fonctions s'utilisent comme les fonctions PHP courantes et sont disponibles dans toutes les expressions :
<p>{clamp($num, 1, 100)}</p>
{if odd($num)} ... {/if}
Les fonctions personnalisées s'enregistrent de cette manière :
$latte = new Latte\Engine;
$latte->addFunction('shortify', fn(string $s, int $len = 10) => mb_substr($s, 0, $len));
On les appelle ensuite ainsi dans le template :
<p>{shortify($text)}</p>
<p>{shortify($text, 100)}</p>
Fonctions
clamp (int|float $value, int|float $min, int|float $max): int|float
Borne une valeur à la plage inclusive délimitée par min et max.
{=clamp($level, 0, 255)}
Voir aussi le filtre clamp.
divisibleBy (int $value, int $by): bool
Vérifie si une variable est divisible par un nombre.
{if divisibleBy($num, 5)} ... {/if}
even (int $value): bool
Vérifie si le nombre donné est pair.
{if even($num)} ... {/if}
first (string|iterable $value): mixed
Retourne le premier élément d'un tableau ou le premier caractère d'une chaîne :
{=first([1, 2, 3, 4])} {* affiche 1 *}
{=first('abcd')} {* affiche 'a' *}
Voir aussi last(), le filtre first.
group (iterable $data, string|int|\Closure $by): iterable
Cette fonction regroupe les données selon différents critères.
Dans cet exemple, les lignes du tableau sont regroupées par la colonne categoryId. La sortie est une structure
itérable de groupes, dont la clé est la valeur de la colonne categoryId. Lisez le guide détaillé.
{foreach group($items, categoryId) as $categoryId => $categoryItems}
<ul>
{foreach $categoryItems as $item}
<li>{$item->name}</li>
{/foreach}
</ul>
{/foreach}
Voir aussi le filtre group.
hasBlock (string $name): bool
Vérifie si un bloc du nom indiqué existe :
{if hasBlock(header)} ... {/if}
Voir aussi la vérification de l'existence d'un bloc.
hasTemplate (string $name): bool
Détermine si un template du nom indiqué existe :
{if hasTemplate('foo.latte')} ... {/if}
last (string|array $value): mixed
Retourne le dernier élément d'un tableau ou le dernier caractère d'une chaîne :
{=last([1, 2, 3, 4])} {* affiche 4 *}
{=last('abcd')} {* affiche 'd' *}
Voir aussi first(), le filtre last.
odd (int $value): bool
Vérifie si le nombre donné est impair.
{if odd($num)} ... {/if}
slice (string|iterable $value, int $start, ?int $length=null, bool $preserveKeys=false): string|array|\Generator
Extrait une portion d'un tableau, d'une chaîne ou d'un itérateur.
{=slice('hello', 1, 2)} {* affiche 'el' *}
{=slice(['a', 'b', 'c'], 1, 2)} {* affiche ['b', 'c'] *}
La fonction se comporte comme la fonction PHP array_slice pour les tableaux ou mb_substr pour les
chaînes, avec un repli sur la fonction iconv_substr en mode UTF‑8. Si l'entrée est un itérateur général, elle
est convertie en générateur qui produit les éléments extraits.
Si start est positif ou nul, la séquence commencera à ce décalage depuis le début du tableau ou de la chaîne.
Si start est négatif, elle commencera à cette distance de la fin.
Si length est indiqué et positif, la séquence comptera au plus autant d'éléments. Si l'entrée est plus courte
que length, seuls les éléments disponibles seront présents. Si length est indiqué et négatif, la
séquence s'arrêtera à autant d'éléments de la fin de l'entrée. S'il est omis, la séquence contiendra tout, de
start jusqu'à la fin de l'entrée.
Par défaut, la fonction réorganise et réinitialise les clés entières du tableau. Ce comportement peut être modifié en
fixant preserveKeys à true. Les clés de type chaîne sont toujours préservées, quel que soit ce paramètre.