Функции 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): iterable
Эта функция группирует данные по разным критериям.
В этом примере записи таблицы группируются по столбцу 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}
См. также проверку существования блока.
hasTemplate (string $name): bool
Определяет, существует ли шаблон с указанным именем:
{if hasTemplate('foo.latte')} ... {/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|iterable $value, int $start, ?int $length=null, bool $preserveKeys=false): string|array|\Generator
Извлекает часть массива, строки или итератора.
{=slice('hello', 1, 2)} {* выводит 'el' *}
{=slice(['a', 'b', 'c'], 1, 2)} {* выводит ['b', 'c'] *}
Функция работает как функция PHP array_slice для массивов или
mb_substr для строк, с запасным вариантом в виде функции
iconv_substr в режиме UTF‑8. Если на входе обычный итератор, он
преобразуется в генератор, который отдаёт вырезанные элементы.
Если start неотрицателен, последовательность начнётся с этого
смещения от начала массива или строки. Если start отрицателен,
последовательность начнётся на таком расстоянии от конца.
Если задан положительный length, последовательность будет
содержать не более такого количества элементов. Если вход короче, чем
length, в ней окажутся только доступные элементы. Если задан
отрицательный length, последовательность закончится за столько
элементов до конца входа. Если параметр опущен, последовательность
будет содержать всё от start до конца входа.
По умолчанию функция переупорядочивает и сбрасывает целочисленные
ключи массива. Это поведение можно изменить, установив preserveKeys в
true. Строковые ключи сохраняются всегда, независимо от этого
параметра.