Funzioni di Latte

Oltre alle comuni funzioni di PHP, nei template potete usare anche queste funzioni.

clamp limita un valore all'intervallo indicato
divisibleBy verifica se una variabile è divisibile per un numero
even verifica se il numero indicato è pari
first restituisce il primo elemento di un array o il primo carattere di una stringa
group raggruppa i dati secondo vari criteri
hasBlock rileva l'esistenza di un blocco
hasTemplate rileva l'esistenza di un template
last restituisce l'ultimo elemento di un array o l'ultimo carattere di una stringa
odd verifica se il numero indicato è dispari
slice estrae una porzione di un array o di una stringa

Uso

Le funzioni si usano allo stesso modo delle comuni funzioni di PHP e possono comparire in tutte le espressioni:

<p>{clamp($num, 1, 100)}</p>

{if odd($num)} ... {/if}

Le funzioni personalizzate si registrano così:

$latte = new Latte\Engine;
$latte->addFunction('shortify', fn(string $s, int $len = 10) => mb_substr($s, 0, $len));

Nel template si chiamano poi in questo modo:

<p>{shortify($text)}</p>
<p>{shortify($text, 100)}</p>

Funzioni

clamp (int|float $value, int|float $min, int|float $max): int|float

Limita un valore all'intervallo indicato, estremi min e max inclusi.

{=clamp($level, 0, 255)}

Vedi anche il filtro clamp.

divisibleBy (int $value, int $by)bool

Verifica se una variabile è divisibile per un numero.

{if divisibleBy($num, 5)} ... {/if}

even (int $value): bool

Verifica se il numero indicato è pari.

{if even($num)} ... {/if}

first (string|iterable $value)mixed

Restituisce il primo elemento di un array o il primo carattere di una stringa:

{=first([1, 2, 3, 4])}    {* stampa 1 *}
{=first('abcd')}          {* stampa 'a' *}

Vedi anche last(), filtro first.

group (iterable $data, string|int|\Closure $by): iterable

Questa funzione raggruppa i dati secondo criteri diversi.

In questo esempio le righe della tabella sono raggruppate per la colonna categoryId. Il risultato è una struttura iterabile di gruppi, dove la chiave è il valore della colonna categoryId. Leggete la guida dettagliata.

{foreach group($items, categoryId) as $categoryId => $categoryItems}
    <ul>
        {foreach $categoryItems as $item}
            <li>{$item->name}</li>
        {/foreach}
    </ul>
{/foreach}

Vedi anche il filtro group.

hasBlock (string $name): bool

Verifica se esiste un blocco con il nome indicato:

{if hasBlock(header)} ... {/if}

Vedi anche il controllo dell'esistenza di un blocco.

hasTemplate (string $name)bool

Determina se esiste un template con il nome indicato:

{if hasTemplate('foo.latte')} ... {/if}

last (string|array $value)mixed

Restituisce l'ultimo elemento di un array o l'ultimo carattere di una stringa:

{=last([1, 2, 3, 4])}    {* stampa 4 *}
{=last('abcd')}          {* stampa 'd' *}

Vedi anche first(), filtro last.

odd (int $value): bool

Verifica se il numero indicato è dispari.

{if odd($num)} ... {/if}

slice (string|iterable $value, int $start, ?int $length=null, bool $preserveKeys=false): string|array|\Generator

Estrae una porzione di un array, di una stringa o di un iteratore.

{=slice('hello', 1, 2)}           {* stampa 'el' *}
{=slice(['a', 'b', 'c'], 1, 2)}   {* stampa ['b', 'c'] *}

La funzione si comporta come la funzione PHP array_slice per gli array o mb_substr per le stringhe, con un ripiego sulla funzione iconv_substr in modalità UTF‑8. Se l'input è un iteratore generico, viene convertito in un generatore che restituisce gli elementi della porzione.

Se start non è negativo, la sequenza inizierà a quella distanza dall'inizio dell'array o della stringa. Se start è negativo, la sequenza inizierà a quella distanza dalla fine.

Se length è indicato ed è positivo, la sequenza avrà al massimo quel numero di elementi. Se l'input è più corto di length, saranno presenti solo gli elementi disponibili. Se length è indicato ed è negativo, la sequenza si fermerà a quel numero di elementi dalla fine dell'input. Se viene omesso, la sequenza conterrà tutto da start fino alla fine dell'input.

Per impostazione predefinita la funzione riordina e azzera le chiavi intere dell'array. Questo comportamento si può cambiare impostando preserveKeys a true. Le chiavi stringa vengono sempre conservate, indipendentemente da questo parametro.

versione: 3.x