Функции 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
для строк с резервным вариантом на функцию iconv_substr
в
режиме UTF‑8.
Если start положительный, последовательность начнется со смещением на это количество от начала массива/строки. Если отрицательный, последовательность начнется со смещением на столько от конца.
Если указан параметр length и он положительный, последовательность будет содержать столько элементов. Если в эту функцию передан отрицательный параметр length, последовательность будет содержать все элементы исходного массива, начиная с позиции start и заканчивая на позиции, меньшей на length элементов от конца массива. Если этот параметр не указан, последовательность будет содержать все элементы исходного массива, начиная с позиции start.
По умолчанию функция изменяет порядок и сбрасывает целочисленные ключи массива. Это поведение можно изменить, установив preserveKeys в true. Строковые ключи всегда сохраняются, независимо от этого параметра.