Функции Latte

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

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

версия: 3.0