Funciones de Latte
Además de las funciones habituales de PHP, en las plantillas puede usar también estas funciones.
Uso
Las funciones se usan igual que las funciones habituales de PHP y pueden emplearse en todas las expresiones:
<p>{clamp($num, 1, 100)}</p>
{if odd($num)} ... {/if}
Las funciones personalizadas se pueden registrar así:
$latte = new Latte\Engine;
$latte->addFunction('shortify', fn(string $s, int $len = 10) => mb_substr($s, 0, $len));
Después se llaman en la plantilla de este modo:
<p>{shortify($text)}</p>
<p>{shortify($text, 100)}</p>
Funciones
clamp (int|float $value, int|float $min, int|float $max): int|float
Acota un valor al rango inclusivo indicado por min y max.
{=clamp($level, 0, 255)}
Véase también el filtro clamp.
divisibleBy (int $value, int $by): bool
Comprueba si una variable es divisible por un número.
{if divisibleBy($num, 5)} ... {/if}
even (int $value): bool
Comprueba si el número indicado es par.
{if even($num)} ... {/if}
first (string|iterable $value): mixed
Devuelve el primer elemento de un array o el primer carácter de una cadena:
{=first([1, 2, 3, 4])} {* muestra 1 *}
{=first('abcd')} {* muestra 'a' *}
Véase también last(), filtro first.
group (iterable $data, string|int|\Closure $by): iterable
Esta función agrupa los datos según distintos criterios.
En este ejemplo, las filas de la tabla se agrupan por la columna categoryId. La salida es una estructura iterable
de grupos, donde la clave es el valor de la columna categoryId. Lea la guía detallada.
{foreach group($items, categoryId) as $categoryId => $categoryItems}
<ul>
{foreach $categoryItems as $item}
<li>{$item->name}</li>
{/foreach}
</ul>
{/foreach}
Véase también el filtro group.
hasBlock (string $name): bool
Comprueba si existe un bloque con el nombre indicado:
{if hasBlock(header)} ... {/if}
Véase también comprobación de la existencia de un bloque.
hasTemplate (string $name): bool
Determina si existe una plantilla con el nombre indicado:
{if hasTemplate('foo.latte')} ... {/if}
last (string|array $value): mixed
Devuelve el último elemento de un array o el último carácter de una cadena:
{=last([1, 2, 3, 4])} {* muestra 4 *}
{=last('abcd')} {* muestra 'd' *}
Véase también first(), filtro last.
odd (int $value): bool
Comprueba si el número indicado es impar.
{if odd($num)} ... {/if}
slice (string|iterable $value, int $start, ?int $length=null, bool $preserveKeys=false): string|array|\Generator
Extrae una porción de un array, una cadena o un iterador.
{=slice('hello', 1, 2)} {* muestra 'el' *}
{=slice(['a', 'b', 'c'], 1, 2)} {* muestra ['b', 'c'] *}
La función funciona como la función de PHP array_slice para los arrays o mb_substr para las
cadenas, con recurso a la función iconv_substr en modo UTF‑8. Si la entrada es un iterador general, se convierte
en un generador que va devolviendo los elementos de la porción.
Si start es no negativo, la secuencia empezará en ese desplazamiento desde el principio del array o la cadena.
Si start es negativo, la secuencia empezará a esa distancia del final.
Si se indica length y es positivo, la secuencia tendrá como máximo ese número de elementos. Si la entrada es
más corta que length, solo estarán los elementos disponibles. Si se indica length y es negativo, la
secuencia se detendrá a ese número de elementos del final de la entrada. Si se omite, la secuencia contendrá todo desde
start hasta el final de la entrada.
De forma predeterminada, la función reordena y reinicia las claves enteras del array. Este comportamiento se puede cambiar
poniendo preserveKeys a true. Las claves de tipo cadena se conservan siempre, con independencia de este
parámetro.