Fonctions Latte
Dans les templates, en plus des fonctions PHP courantes, nous pouvons utiliser ces fonctions supplémentaires.
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.