Fonctions Latte

Dans les templates, en plus des fonctions PHP courantes, nous pouvons utiliser ces fonctions supplémentaires.

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

Utilisation

Les fonctions s'utilisent de la même manière que les fonctions PHP courantes et peuvent être utilisées dans toutes les expressions :

<p>{clamp($num, 1, 100)}</p>

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

Les fonctions personnalisées peuvent être enregistrées de cette manière :

$latte = new Latte\Engine;
$latte->addFunction('shortify', fn(string $s, int $len = 10) => mb_substr($s, 0, $len));

Dans le template, on l'appelle ensuite comme ceci :

<p>{shortify($text)}</p>
<p>{shortify($text, 100)}</p>

Fonctions

clamp (int|float $value, int|float $min, int|float $max): int|float

Limite la valeur à la plage inclusive donnée 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 un nombre donné est pair.

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

first (string|iterable $value)mixed

Retourne le premier élément d'un tableau ou 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)array

La 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 un tableau de tableaux où la clé est la valeur de la colonne categoryId. Lisez le tutoriel 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 le bloc du nom spécifié existe :

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

Voir aussi la vérification de l'existence des blocs.

last (string|array $value)mixed

Retourne le dernier élément d'un tableau ou 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 un nombre donné est impair.

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

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

Extrait une partie d'un tableau ou d'une chaîne.

{=slice('bonjour', 1, 2)}           {* affiche 'on' *}
{=slice(['a', 'b', 'c'], 1, 2)}   {* affiche ['b', 'c'] *}

Le filtre fonctionne comme la fonction PHP array_slice pour les tableaux ou mb_substr pour les chaînes avec un fallback sur la fonction iconv_substr en mode UTF‑8.

Si start est positif, la séquence commencera décalée de ce nombre depuis le début du tableau/chaîne. Si il est négatif, la séquence commencera décalée d'autant depuis la fin.

Si le paramètre length est spécifié et est positif, la séquence contiendra autant d'éléments. Si un paramètre length négatif est passé à cette fonction, la séquence contiendra tous les éléments du tableau d'origine, commençant à la position start et se terminant à la position inférieure de length éléments par rapport à la fin du tableau. Si vous ne spécifiez pas ce paramètre, la séquence contiendra tous les éléments du tableau d'origine, commençant à la position start.

Par défaut, le filtre modifie l'ordre et réinitialise les clés entières du tableau. Ce comportement peut être modifié en définissant preserveKeys sur true. Les clés de chaîne sont toujours préservées, quel que soit ce paramètre.

version: 3.0