Функции Latte

Помимо обычных функций PHP, в шаблонах можно использовать и эти функции.

clamp ограничивает значение заданным диапазоном
divisibleBy проверяет, делится ли переменная на число
even проверяет, является ли число чётным
first возвращает первый элемент массива или первый символ строки
group группирует данные по разным критериям
hasBlock определяет существование блока
hasTemplate определяет существование шаблона
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): 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. Строковые ключи сохраняются всегда, независимо от этого параметра.

версия: 3.x