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