Funzioni Latte

Nei template, oltre alle normali funzioni PHP, possiamo utilizzare anche queste funzioni aggiuntive.

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

Utilizzo

Le funzioni vengono utilizzate allo stesso modo delle normali funzioni PHP e possono essere utilizzate in tutte le espressioni:

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

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

Funzioni personalizzate possono essere registrate in questo modo:

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

Nel template, viene quindi chiamata così:

<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'interno dell'intervallo inclusivo specificato min e max.

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

Vedi anche filtro clamp.

divisibleBy (int $value, int $by)bool

Controlla se una variabile è divisibile per un numero.

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

even (int $value): bool

Controlla se un dato numero è pari.

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

first (string|iterable $value)mixed

Restituisce il primo elemento di un array o 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)array

La funzione raggruppa i dati secondo vari criteri.

In questo esempio, le righe della tabella vengono raggruppate per la colonna categoryId. L'output è un array di array, dove la chiave è il valore nella colonna categoryId. Leggi il tutorial dettagliato.

{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 specificato:

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

Vedi anche controllo dell'esistenza dei blocchi.

last (string|array $value)mixed

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

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

Vedi anche first, filtro last.

odd (int $value): bool

Controlla se un dato numero è dispari.

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

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

Estrae una parte di un array o di una stringa.

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

Il filtro funziona come la funzione PHP array_slice per gli array o mb_substr per le stringhe con fallback alla funzione iconv_substr in modalità UTF‑8.

Se start è positivo, la sequenza inizierà spostata di questo numero dall'inizio dell'array/stringa. Se è negativo, la sequenza inizierà spostata di tanto dalla fine.

Se il parametro length è specificato ed è positivo, la sequenza conterrà tanti elementi. Se a questa funzione viene passato un parametro length negativo, la sequenza conterrà tutti gli elementi dell'array originale, iniziando dalla posizione start e terminando alla posizione minore di length elementi dalla fine dell'array. Se questo parametro non viene specificato, la sequenza conterrà tutti gli elementi dell'array originale, iniziando dalla posizione start.

Per impostazione predefinita, il filtro riordina e reimposta le chiavi intere dell'array. Questo comportamento può essere modificato impostando preserveKeys su true. Le chiavi stringa vengono sempre conservate, indipendentemente da questo parametro.

versione: 3.0