Funcții Latte
În șabloane, pe lângă funcțiile PHP obișnuite, putem folosi și aceste funcții suplimentare.
Utilizare
Funcțiile se utilizează la fel ca funcțiile PHP obișnuite și pot fi folosite în toate expresiile:
<p>{clamp($num, 1, 100)}</p>
{if odd($num)} ... {/if}
Funcțiile personalizate pot fi înregistrate în acest mod:
$latte = new Latte\Engine;
$latte->addFunction('shortify', fn(string $s, int $len = 10) => mb_substr($s, 0, $len));
În șablon, se apelează apoi astfel:
<p>{shortify($text)}</p>
<p>{shortify($text, 100)}</p>
Funcții
clamp (int|float $value, int|float $min, int|float $max): int|float
Limitează valoarea la intervalul inclusiv dat min și max.
{=clamp($level, 0, 255)}
Vezi și filtrul clamp.
divisibleBy (int $value, int $by): bool
Verifică dacă o variabilă este divizibilă cu un număr.
{if divisibleBy($num, 5)} ... {/if}
even (int $value): bool
Verifică dacă numărul dat este par.
{if even($num)} ... {/if}
first (string|iterable $value): mixed
Returnează primul element al array-ului sau caracterul șirului:
{=first([1, 2, 3, 4])} {* afișează 1 *}
{=first('abcd')} {* afișează 'a' *}
Vezi și last, filtrul first.
group (iterable $data, string|int|\Closure $by): array
Funcția grupează datele după diverse criterii.
În acest exemplu, rândurile din tabel sunt grupate după coloana categoryId
. Ieșirea este un array de
array-uri, unde cheia este valoarea din coloana categoryId
. Citiți un tutorial detaliat.
{foreach group($items, categoryId) as $categoryId => $categoryItems}
<ul>
{foreach $categoryItems as $item}
<li>{$item->name}</li>
{/foreach}
</ul>
{/foreach}
Vezi și filtrul group.
hasBlock (string $name): bool
Verifică dacă blocul cu numele specificat există:
{if hasBlock(header)} ... {/if}
Vezi și verificarea existenței blocurilor.
last (string|array $value): mixed
Returnează ultimul element al array-ului sau caracterul șirului:
{=last([1, 2, 3, 4])} {* afișează 4 *}
{=last('abcd')} {* afișează 'd' *}
Vezi și first, filtrul last.
odd (int $value): bool
Verifică dacă numărul dat este impar.
{if odd($num)} ... {/if}
slice (string|array $value, int $start, ?int $length=null, bool $preserveKeys=false): string|array
Extrage o parte a array-ului sau a șirului.
{=slice('salut', 1, 2)} {* afișează 'al' *}
{=slice(['a', 'b', 'c'], 1, 2)} {* afișează ['b', 'c'] *}
Filtrul funcționează ca funcția PHP array_slice
pentru array-uri sau mb_substr
pentru șiruri, cu
fallback la funcția iconv_substr
în modul UTF-8.
Dacă start este pozitiv, secvența va începe deplasată cu acest număr de la începutul array-ului/șirului. Dacă este negativ, secvența va începe deplasată cu atâtea de la sfârșit.
Dacă parametrul length este specificat și este pozitiv, secvența va conține atâtea elemente. Dacă în această funcție este transmis un parametru length negativ, secvența va conține toate elementele array-ului original, începând de la poziția start și terminând la poziția mai mică cu length elemente de la sfârșitul array-ului. Dacă nu specificați acest parametru, secvența va conține toate elementele array-ului original, începând de la poziția start.
În mod implicit, filtrul schimbă ordinea și resetează cheile întregi ale array-ului. Acest comportament poate fi schimbat setând preserveKeys la true. Cheile șir sunt întotdeauna păstrate, indiferent de acest parametru.