Функции на 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' *}
Вижте също последно, първо филтриране.
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' *}
Вижте също първи, последен филтър.
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 е неотрицателно число, последователността ще започне от това начало в променлива. Ако началната стойност е отрицателна, последователността ще започне на това разстояние от края на променливата.
Ако е зададена дължина и тя е положителна, последователността ще съдържа до този брой елементи. Ако променливата е по-къса от дължината, ще бъдат представени само наличните елементи на променливата. Ако е зададена дължина и тя е отрицателна, последователността ще спре на толкова елемента от края на променливата. Ако не е зададена дължина, последователността ще съдържа всички елементи от отместването до края на променливата.
Филтърът по подразбиране пренарежда и нулира ключовете на масив от цели числа. Това поведение може да бъде променено чрез задаване на preserveKeys на true. Ключовете на низове винаги се запазват, независимо от този параметър.