Функції Latte
У шаблонах, крім звичайних функцій PHP, ми можемо використовувати також ці додаткові функції.
Використання
Функції використовуються так само, як звичайні функції 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
. Рядкові ключі завжди зберігаються, незалежно від цього
параметра.