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 |#last], [filter first |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 |#first], [filter last |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'] *}
```

Фильтр срезов работает как функция `array_slice` PHP для массивов и `mb_substr` для строк с возвратом к `iconv_substr` в режиме UTF-8.

Если start неотрицательно, то последовательность начнется с этого начала в переменной. Если start отрицательно, то последовательность начнется на таком-то расстоянии от конца переменной.

Если задана длина и она положительна, то последовательность будет содержать до этого количества элементов. Если переменная короче длины, то будут присутствовать только доступные элементы переменной. Если длина задана и отрицательна, то последовательность остановится на столько элементов от конца переменной. Если длина не указана, то последовательность будет содержать все элементы от смещения до конца переменной.

Filter по умолчанию переупорядочивает и сбрасывает ключи целочисленного массива. Это поведение можно изменить, установив 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' *}

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