Функции 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. Строковые ключи всегда сохраняются, независимо от этого параметра.