Funzioni Latte
Nei template, oltre alle normali funzioni PHP, possiamo utilizzare anche queste funzioni aggiuntive.
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.