Funciones Latte
En las plantillas, además de las funciones PHP habituales, también podemos usar estas otras.
Uso
Las funciones se utilizan igual que las funciones PHP habituales y se pueden usar en todas las expresiones:
<p>{clamp($num, 1, 100)}</p>
{if odd($num)} ... {/if}
Las Funciones personalizadas se pueden registrar de esta manera:
$latte = new Latte\Engine;
$latte->addFunction('shortify', fn(string $s, int $len = 10) => mb_substr($s, 0, $len));
Luego se llama en la plantilla así:
<p>{shortify($text)}</p>
<p>{shortify($text, 100)}</p>
Funciones
clamp (int|float $value, int|float $min, int|float $max): int|float
Limita el valor al rango inclusivo dado de min y max.
{=clamp($level, 0, 255)}
Vea también 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 un número dado es par.
{if even($num)} ... {/if}
first (string|iterable $value): mixed
Devuelve el primer elemento de un array o carácter de una cadena:
{=first([1, 2, 3, 4])} {* imprime 1 *}
{=first('abcd')} {* imprime 'a' *}
Vea también last, filtro first.
group (iterable $data, string|int|\Closure $by): array
La función agrupa los datos según diferentes criterios.
En este ejemplo, las filas de la tabla se agrupan por la columna categoryId
. La salida es un array de arrays donde
la clave es el valor de la columna categoryId
. Lea el tutorial
detallado.
{foreach group($items, categoryId) as $categoryId => $categoryItems}
<ul>
{foreach $categoryItems as $item}
<li>{$item->name}</li>
{/foreach}
</ul>
{/foreach}
Vea también el filtro group.
hasBlock (string $name): bool
Detecta si existe un bloque con el nombre especificado:
{if hasBlock(header)} ... {/if}
Vea también comprobación de la existencia de bloques.
last (string|array $value): mixed
Devuelve el último elemento de un array o carácter de una cadena:
{=last([1, 2, 3, 4])} {* imprime 4 *}
{=last('abcd')} {* imprime 'd' *}
Vea también first, filtro last.
odd (int $value): bool
Comprueba si un número dado es impar.
{if odd($num)} ... {/if}
slice (string|array $value, int $start, ?int $length=null, bool $preserveKeys=false): string|array
Extrae una parte de un array o cadena.
{=slice('hello', 1, 2)} {* imprime 'el' *}
{=slice(['a', 'b', 'c'], 1, 2)} {* imprime ['b', 'c'] *}
La función funciona como la función PHP array_slice
para arrays o mb_substr
para cadenas con
fallback a la función iconv_substr
en modo UTF‑8.
Si start es positivo, la secuencia comenzará desplazada este número desde el inicio del array/cadena. Si es negativo, la secuencia comenzará desplazada tanto desde el final.
Si se especifica el parámetro length y es positivo, la secuencia contendrá tantos elementos. Si se pasa un parámetro length negativo a esta función, la secuencia contendrá todos los elementos del array original, comenzando en la posición start y terminando en la posición menor a length elementos desde el final del array. Si no especifica este parámetro, la secuencia contendrá todos los elementos del array original, comenzando en la posición start.
Por defecto, la función cambia el orden y restablece las claves enteras del array. Este comportamiento se puede cambiar estableciendo preserveKeys a true. Las claves de cadena siempre se conservan, independientemente de este parámetro.