Funcții Latte

În șabloane, pe lângă funcțiile PHP obișnuite, putem folosi și aceste funcții suplimentare.

clamp limitează valoarea la un interval dat
divisibleBy verifică dacă o variabilă este divizibilă cu un număr
even verifică dacă numărul dat este par
first returnează primul element al array-ului sau caracterul șirului
group grupează datele după diverse criterii
hasBlock verifică existența unui bloc
last returnează ultimul element al array-ului sau caracterul șirului
odd verifică dacă numărul dat este impar
slice extrage o parte a array-ului sau a șirului

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.

versiune: 3.0