Fonctions Latte

Outre les fonctions PHP courantes, vous pouvez aussi utiliser ces fonctions dans les templates.

clamp borne une valeur à la plage donnée
divisibleBy vérifie si une variable est divisible par un nombre
even vérifie si le nombre donné est pair
first retourne le premier élément d'un tableau ou le premier caractère d'une chaîne
group regroupe les données selon différents critères
hasBlock détecte l'existence d'un bloc
hasTemplate détecte l'existence d'un template
last retourne le dernier élément d'un tableau ou le dernier caractère d'une chaîne
odd vérifie si le nombre donné est impair
slice extrait une portion d'un tableau ou d'une chaîne

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.

version: 3.x