Nette Documentation Preview

syntax
Функции на Latte
****************

.[perex]
В допълнение към обичайните функции на PHP можете да ги използвате и в шаблони.

.[table-latte-filters]
| `clamp` | [притискане на стойност в диапазон |#clamp]
| `divisibleBy`| [проверява дали дадена променлива се дели на дадено число |#divisibleBy]
| `even` | [проверява дали дадено число е четно число|#even]
| `first` | [връща първия елемент на масив или символен низ |#first]
| `group` | [групиране на данни по различни критерии |#group]
| `hasBlock` | [открива съществуването на блок |#hasBlock]
| `last` | [връща последния елемент на масив или символен низ|#last]
| `odd` | [проверява дали числото е нечетно |#odd]
| `slice` | [извлича фрагмент от масив или низ |#slice]


използване на .[#toc-usage]
===========================

Функциите се използват по същия начин, както обикновените функции на PHP, и могат да се използват във всички изрази:

```latte
<p>{clamp($num, 1, 100)}</p>

{if odd($num)} ... {/if}
```

По този начин могат да се регистрират [потребителски функции |extending-latte#Functions]:

```php
$latte = new Latte\Engine;
$latte->addFunction('shortify', fn(string $s, int $len = 10) => mb_substr($s, 0, $len));
```

Използваме го в шаблона по следния начин

```latte
<p>{shortify($text)}</p>
<p>{shortify($text, 100)}</p>
```


Функции .[#toc-functions]
=========================


clamp(int|float $value, int|float $min, int|float $max): int|float .[method]
----------------------------------------------------------------------------
Връща стойността, притисната в обхвата min и max.

```latte
{=clamp($level, 0, 255)}
```

Вижте също [филтърна скоба |filters#clamp]:


divisibleBy(int $value, int $by): bool .[method]
------------------------------------------------
Проверява дали дадена променлива е делима на число.

```latte
{if divisibleBy($num, 5)} ... {/if}
```


even(int $value): bool .[method]
--------------------------------
Проверява дали дадено число е четно число.

```latte
{if even($num)} ... {/if}
```


first(string|iterable $value): mixed .[method]
----------------------------------------------
Връща първия елемент на масив или символен низ:

```latte
{=first([1, 2, 3, 4])}    {* списъци 1 *}
{=first('abcd')}          {* списъци 'a' *}
```

Вижте също [последно |#last], [първо филтриране |filters#first].


group(iterable $data, string|int|\Closure $by): array .[method]{data-version:3.0.16}
------------------------------------------------------------------------------------
Тази функция групира данните по различни критерии.

В този пример редовете в таблицата са групирани по колоната `categoryId`. Изходът е масив от полета, където ключът е стойността в колоната `categoryId`. Прочетете [подробните инструкции |cookbook/grouping].

```latte
{foreach group($items, categoryId) as $categoryId => $categoryItems}
    <ul>
        {foreach $categoryItems as $item}
            <li>{$item->name}</li>
        {/foreach}
    </ul>
{/foreach}
```

Вижте също филтърна [група |filters#group].


hasBlock(string $name): bool .[method]{data-version:3.0.10}
-----------------------------------------------------------
Проверява дали блокът със зададеното име съществува:

```latte
{if hasBlock(header)} ... {/if}
```

Вижте също [проверка на съществуването на блока |template-inheritance#Checking Block Existence].


last(string|array $value): mixed .[method]
------------------------------------------
Връща последния елемент на масив или символен низ:

```latte
{=last([1, 2, 3, 4])}    {* списъци 4 *}
{=last('abcd')}          {* списъци 'd' *}
```

Вижте също [първи |#first], [последен филтър |filters#last].


odd(int $value): bool .[method]
-------------------------------
Проверява дали зададеното число е нечетно.

```latte
{if odd($num)} ... {/if}
```


slice(string|array $value, int $start, ?int $length=null, bool $preserveKeys=false): string|array .[method]
-----------------------------------------------------------------------------------------------------------
Извлича фрагмент от масив или низ.

```latte
{=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. Ключовете на низове винаги се запазват, независимо от този параметър.

Функции на 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)}

Вижте също филтърна скоба:

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. Ключовете на низове винаги се запазват, независимо от този параметър.