Fonctions de Latte
Outre les fonctions PHP courantes, vous pouvez également les utiliser dans les modèles.
Utilisation
Les fonctions sont utilisées 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 façon :
$latte = new Latte\Engine;
$latte->addFunction('shortify', fn(string $s, int $len = 10) => mb_substr($s, 0, $len));
Nous l'utilisons dans un modèle comme celui-ci :
<p>{shortify($text)}</p>
<p>{shortify($text, 100)}</p>
Fonctions
clamp(int|float $value, int|float $min, int|float $max): int|float
Renvoie une valeur limitée à l'intervalle inclusif de min et max.
{=clamp($level, 0, 255)}
Voir également 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 de caractères :
{=first([1, 2, 3, 4])} {* sorties 1 *}
{=first('abcd')} {* sorties 'a' *}
Voir aussi last, filter first.
group(iterable $data, string|int|\Closure $by): array
Cette fonction permet de regrouper 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
champs dont la clé est la valeur de la colonne categoryId
. Lisez les instructions
détaillées.
{foreach group($items, categoryId) as $categoryId => $categoryItems}
<ul>
{foreach $categoryItems as $item}
<li>{$item->name}</li>
{/foreach}
</ul>
{/foreach}
Voir aussi groupe de filtres.
hasBlock(string $name): bool
Vérifie si le bloc du nom spécifié existe :
{if hasBlock(header)} ... {/if}
Voir aussi vérification de l'existence du bloc.
last(string|array $value): mixed
Renvoie le dernier élément du tableau ou le dernier caractère de la chaîne :
{=last([1, 2, 3, 4])} {* sorties 4 *}
{=last('abcd')} {* sorties 'd' *}
Voir aussi first, filter last.
odd(int $value): bool
Vérifie si le nombre donné est impair.
{if odd($num)} ... {/if}
slice(string|array $value, int $start, ?int $length=null, bool $preserveKeys=false): string|array
Extrait une tranche d'un tableau ou d'une chaîne de caractères.
{=slice('hello', 1, 2)} {* sorties 'el' *}
{=slice(['a', 'b', 'c'], 1, 2)} {* sorties ['b', 'c'] *}
Le filtre de tranche fonctionne comme la fonction PHP array_slice
pour les tableaux et mb_substr
pour
les chaînes de caractères, avec un retour à iconv_substr
en mode UTF-8.
Si start est non négatif, la séquence commencera à ce point de départ dans la variable. Si start est négatif, la séquence commencera à cette distance de la fin de la variable.
Si length est donné et est positif, alors la séquence aura jusqu'à ce nombre d'éléments. Si la variable est plus courte que la longueur, seuls les éléments disponibles de la variable seront présents. Si la longueur est donnée et qu'elle est négative, la séquence s'arrêtera à ce nombre d'éléments à partir de la fin de la variable. Si elle est omise, alors la séquence contiendra tous les éléments depuis le décalage jusqu'à la fin de la variable.
Filter réordonnera et réinitialisera les clés du tableau d'entiers par défaut. Ce comportement peut être modifié en définissant preserveKeys à true. Les clés des chaînes de caractères sont toujours préservées, quel que soit ce paramètre.