Функції Latte

У шаблонах, крім звичайних функцій PHP, ми можемо використовувати також ці додаткові функції.

clamp обмежує значення в заданому діапазоні
divisibleBy перевіряє, чи ділиться змінна на число
even перевіряє, чи є дане число парним
first повертає перший елемент масиву або символ рядка
group групує дані за різними критеріями
hasBlock перевіряє існування блоку
last повертає останній елемент масиву або символ рядка
odd перевіряє, чи є дане число непарним
slice витягує частину масиву або рядка

Використання

Функції використовуються так само, як звичайні функції PHP, і їх можна використовувати у всіх виразах:

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

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

Власні функції можна зареєструвати таким чином:

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

У шаблоні потім викликається так:

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

Функції

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

Обмежує значення в заданому інклюзивному діапазоні min та max.

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

Див. також фільтр clamp.

divisibleBy (int $value, int $by)bool

Перевіряє, чи ділиться змінна на число.

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

even (int $value): bool

Перевіряє, чи є дане число парним.

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

first (string|iterable $value)mixed

Повертає перший елемент масиву або символ рядка:

{=first([1, 2, 3, 4])}    {* виведе 1 *}
{=first('abcd')}          {* виведе 'a' *}

Див. також last, фільтр first.

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

Функція групує дані за різними критеріями.

У цьому прикладі рядки в таблиці групуються за стовпцем categoryId. Виходом є масив масивів, де ключем є значення у стовпці categoryId. Прочитайте детальний посібник.

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

Див. також фільтр group.

hasBlock (string $name): bool

Перевіряє, чи існує блок із зазначеною назвою:

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

Див. також перевірка існування блоків.

last (string|array $value)mixed

Повертає останній елемент масиву або символ рядка:

{=last([1, 2, 3, 4])}    {* виведе 4 *}
{=last('abcd')}          {* виведе 'd' *}

Див. також first, фільтр last.

odd (int $value): bool

Перевіряє, чи є дане число непарним.

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

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

Витягує частину масиву або рядка.

{=slice('hello', 1, 2)}           {* виведе 'el' *}
{=slice(['a', 'b', 'c'], 1, 2)}   {* виведе ['b', 'c'] *}

Функція працює як функція PHP array_slice для масивів або mb_substr для рядків з fallback на функцію iconv_substr у режимі UTF‑8.

Якщо start додатний, послідовність почнеться зі зміщенням на цю кількість від початку масиву/рядка. Якщо від'ємний, послідовність почнеться зі зміщенням на стільки від кінця.

Якщо вказаний параметр length і він додатний, послідовність міститиме стільки елементів. Якщо до цієї функції передано від'ємний параметр length, послідовність міститиме всі елементи вихідного масиву, починаючи з позиції start і закінчуючи на позиції, меншій на length елементів від кінця масиву. Якщо цей параметр не вказано, послідовність міститиме всі елементи вихідного масиву, починаючи з позиції start.

За замовчуванням функція змінює порядок і скидає цілочисельні ключі масиву. Цю поведінку можна змінити, встановивши preserveKeys на true. Рядкові ключі завжди зберігаються, незалежно від цього параметра.

версія: 3.0