Funciones Latte
Además de las funciones comunes de PHP, también puede utilizarlas en plantillas.
Uso
Las funciones se utilizan de la misma manera que las funciones comunes de PHP y se pueden utilizar 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));
La usamos en una plantilla como esta:
<p>{shortify($text)}</p>
<p>{shortify($text, 100)}</p>
Funciones
clamp(int|float $value, int|float $min, int|float $max): int|float
Devuelve el valor ajustado al rango inclusivo de mín y máx.
{=clamp($level, 0, 255)}
Véase también abrazadera de filtro:
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 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])} {* salidas 1 *}
{=first('abcd')} {* salidas 'a' *}
Véase también last, filter first.
group(iterable $data, string|int|\Closure $by): array
Esta 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 una matriz de campos
donde la clave es el valor de la columna categoryId
. Lea las instrucciones
detalladas.
{foreach group($items, categoryId) as $categoryId => $categoryItems}
<ul>
{foreach $categoryItems as $item}
<li>{$item->name}</li>
{/foreach}
</ul>
{/foreach}
Véase también grupo de filtros.
hasBlock(string $name): bool
Comprueba si existe el bloque del nombre especificado:
{if hasBlock(header)} ... {/if}
Véase también comprobación de existencia de bloque.
last(string|array $value): mixed
Devuelve el último elemento del array o carácter de la cadena:
{=last([1, 2, 3, 4])} {* salidas 4 *}
{=last('abcd')} {* salidas 'd' *}
Véase también first, filter last.
odd(int $value): bool
Comprueba si el 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 porción de un array o de una cadena.
{=slice('hello', 1, 2)} {* salidas 'el' *}
{=slice(['a', 'b', 'c'], 1, 2)} {* salidas ['b', 'c'] *}
El filtro de rebanada funciona como la función PHP array_slice
para matrices y mb_substr
para
cadenas con un fallback a iconv_substr
en modo UTF-8.
Si start es no negativo, la secuencia comenzará en ese inicio de la variable. Si start es negativo, la secuencia comenzará a esa distancia del final de la variable.
Si la longitud es positiva, la secuencia tendrá hasta ese número de elementos. Si la variable es más corta que la longitud, sólo estarán presentes los elementos disponibles de la variable. Si la longitud es negativa, la secuencia se detendrá a esa cantidad de elementos del final de la variable. Si se omite, entonces la secuencia tendrá todo desde offset hasta el final de la variable.
Filter reordenará y restablecerá las claves de la matriz de enteros por defecto. Este comportamiento puede cambiarse estableciendo preserveKeys a true. Las claves de cadena siempre se conservan, independientemente de este parámetro.