Funciones Latte

En las plantillas, además de las funciones PHP habituales, también podemos usar estas otras.

clamp limita el valor a un rango dado
divisibleBy comprueba si una variable es divisible por un número
even comprueba si un número dado es par
first devuelve el primer elemento de un array o carácter de una cadena
group agrupa los datos según diferentes criterios
hasBlock detecta la existencia de un bloque
last devuelve el último elemento de un array o carácter de una cadena
odd comprueba si un número dado es impar
slice extrae una parte de un array o cadena

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.

versión: 3.0