Функції 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)}
Див. також затиск фільтра:
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, filter 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}
Дивіться також групу фільтрів.
hasBlock (string $name): bool
Перевіряє, чи існує блок з вказаною назвою:
{if hasBlock(header)} ... {/if}
Див. також перевірка існування блоку.
last (string|array $value): mixed
Повертає останній елемент масиву або символ рядка:
{=last([1, 2, 3, 4])} {* виводиться 4 *}
{=last('abcd')} {* виводиться 'd' *}
Див. також first, filter 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'] *}
Фільтр зрізів працює як функція array_slice
PHP для масивів і
mb_substr
для рядків із поверненням до iconv_substr
у режимі UTF-8.
Якщо start невід'ємний, то послідовність почнеться з цього початку в змінній. Якщо start від'ємний, то послідовність почнеться на такій-то відстані від кінця змінної.
Якщо задано довжину і вона позитивна, то послідовність міститиме до цієї кількості елементів. Якщо змінна коротша за довжину, то будуть присутні тільки доступні елементи змінної. Якщо довжина задана і від'ємна, то послідовність зупиниться на стільки елементів від кінця змінної. Якщо довжина не вказана, то послідовність міститиме всі елементи від зміщення до кінця змінної.
Filter за замовчуванням упорядковує і скидає ключі цілочисельного масиву. Цю поведінку можна змінити, встановивши preserveKeys в true. Рядкові ключі завжди зберігаються, незалежно від цього параметра.