Nette Documentation Preview

syntax
Funkcja Latte
*************

.[perex]
Oprócz zwykłych funkcji PHP, w szablonach możemy używać także następujących innych funkcji.

.[table-latte-filters]
| `clamp` | [ogranicza wartość do podanego zakresu |#clamp]
| `divisibleBy`| [sprawdza, czy zmienna jest podzielna przez liczbę |#divisibleBy]
| `even` | [sprawdza, czy podana liczba jest parzysta |#even]
| `first` | [zwraca pierwszy element tablicy lub znak łańcucha|#first]
| `group` | [grupuje dane według różnych kryteriów |#group]
| `hasBlock` | [wykrywa istnienie bloku |#hasBlock]
| `last` | [zwraca ostatni element tablicy lub znak łańcucha|#last]
| `odd` | [sprawdza, czy podana liczba jest nieparzysta |#odd]
| `slice` | [wyciąga część tablicy lubłańcucha |#slice]


Korzystanie z .[#toc-usage]
===========================

Funkcje są używane w taki sam sposób jak regularne funkcje PHP i mogą być używane we wszystkich wyrażeniach:

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

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

[Funkcje niestandardowe |extending-latte#Functions] można zarejestrować w następujący sposób:

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

W szablonie jest on wtedy nazywany w następujący sposób:

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


Funkcja .[#toc-functions]
=========================


clamp(int|float $value, int|float $min, int|float $max): int|float .[method]
----------------------------------------------------------------------------
Ogranicza wartość do danego zakresu włączenia min i max.

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

Patrz również [zacisk filtra |filters#clamp].


divisibleBy(int $value, int $by): bool .[method]
------------------------------------------------
Sprawdza, czy zmienna jest podzielna przez liczbę.

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


even(int $value): bool .[method]
--------------------------------
Sprawdza, czy podana liczba jest parzysta.

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


first(string|iterable $value): mixed .[method]
----------------------------------------------
Zwraca pierwszy element tablicy lub znak łańcucha:

```latte
{=first([1, 2, 3, 4])}    {* drukuje 1 *}
{=first('abcd')}          {* drukuje 'a' *}
```

Zobacz także [last |#last], [filter first |filters#first].


group(iterable $data, string|int|\Closure $by): array .[method]{data-version:3.0.16}
------------------------------------------------------------------------------------
Ta funkcja grupuje dane według różnych kryteriów.

W tym przykładzie wiersze w tabeli są grupowane według kolumny `categoryId`. Wynikiem jest tablica pól, w której kluczem jest wartość w kolumnie `categoryId`. Przeczytaj [szczegółowe instrukcje |cookbook/grouping].

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

Zobacz także [grupę |filters#group] filtrów.


hasBlock(string $name): bool .[method]{data-version:3.0.10}
-----------------------------------------------------------
Sprawdza, czy blok o podanej nazwie istnieje:

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

Zobacz także [sprawdzanie istnienia |template-inheritance#Checking Block Existence] bloku.


last(string|array $value): mixed .[method]
------------------------------------------
Zwraca ostatni element tablicy lub znak łańcucha:

```latte
{=last([1, 2, 3, 4])}    {* drukuje 4 *}
{=last('abcd')}          {* drukuje 'd' *}
```

Zobacz także [first |#first], [filter last |filters#last].


odd(int $value): bool .[method]
-------------------------------
Sprawdza, czy podana liczba jest nieparzysta.

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


slice(string|array $value, int $start, ?int $length=null, bool $preserveKeys=false): string|array .[method]
-----------------------------------------------------------------------------------------------------------
Wyodrębnia część tablicy lub łańcucha.

```latte
{=slice('hello', 1, 2)}         {* drukuje 'el' *}
{=slice(['a', 'b', 'c'], 1, 2)} {* drukuje ['b', 'c'] *}
```

Filtr działa jak funkcja PHP `array_slice` dla tablic lub `mb_substr` dla łańcuchów z awaryjnym przejściem do funkcji `iconv_substr` w trybie UTF-8.

Jeśli start jest dodatni, to sekwencja rozpoczyna się z przesunięciem o ten numer od początku tablicy/łańcucha. Jeśli jest ujemny, to sekwencja zaczyna się z przesunięciem o tyle samo od końca.

Jeśli parametr długość jest podany i jest dodatni, to sekwencja będzie zawierała tyle elementów. Jeśli do funkcji zostanie przekazany ujemny parametr długości, sekwencja będzie zawierała wszystkie elementy oryginalnej tablicy, zaczynając od pozycji startowej i kończąc na pozycji mniejszej niż długość elementów od końca tablicy. Jeśli parametr ten nie zostanie przekazany, sekwencja będzie zawierała wszystkie elementy oryginalnej tablicy począwszy od pozycji startowej.

Domyślnie filtr zmienia kolejność i resetuje klucz całkowity tablicy. To zachowanie można zmienić ustawiając preserveKeys na true. Klucze łańcuchowe są zawsze zachowywane, niezależnie od tego parametru.

Funkcja Latte

Oprócz zwykłych funkcji PHP, w szablonach możemy używać także następujących innych funkcji.

clamp ogranicza wartość do podanego zakresu
divisibleBy sprawdza, czy zmienna jest podzielna przez liczbę
even sprawdza, czy podana liczba jest parzysta
first zwraca pierwszy element tablicy lub znak łańcucha
group grupuje dane według różnych kryteriów
hasBlock wykrywa istnienie bloku
last zwraca ostatni element tablicy lub znak łańcucha
odd sprawdza, czy podana liczba jest nieparzysta
slice wyciąga część tablicy lubłańcucha

Korzystanie z

Funkcje są używane w taki sam sposób jak regularne funkcje PHP i mogą być używane we wszystkich wyrażeniach:

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

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

Funkcje niestandardowe można zarejestrować w następujący sposób:

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

W szablonie jest on wtedy nazywany w następujący sposób:

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

Funkcja

clamp(int|float $value, int|float $min, int|float $max): int|float

Ogranicza wartość do danego zakresu włączenia min i max.

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

Patrz również zacisk filtra.

divisibleBy(int $value, int $by)bool

Sprawdza, czy zmienna jest podzielna przez liczbę.

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

even(int $value): bool

Sprawdza, czy podana liczba jest parzysta.

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

first(string|iterable $value)mixed

Zwraca pierwszy element tablicy lub znak łańcucha:

{=first([1, 2, 3, 4])}    {* drukuje 1 *}
{=first('abcd')}          {* drukuje 'a' *}

Zobacz także last, filter first.

group(iterable $data, string|int|\Closure $by)array

Ta funkcja grupuje dane według różnych kryteriów.

W tym przykładzie wiersze w tabeli są grupowane według kolumny categoryId. Wynikiem jest tablica pól, w której kluczem jest wartość w kolumnie categoryId. Przeczytaj szczegółowe instrukcje.

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

Zobacz także grupę filtrów.

hasBlock(string $name): bool

Sprawdza, czy blok o podanej nazwie istnieje:

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

Zobacz także sprawdzanie istnienia bloku.

last(string|array $value)mixed

Zwraca ostatni element tablicy lub znak łańcucha:

{=last([1, 2, 3, 4])}    {* drukuje 4 *}
{=last('abcd')}          {* drukuje 'd' *}

Zobacz także first, filter last.

odd(int $value): bool

Sprawdza, czy podana liczba jest nieparzysta.

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

slice(string|array $value, int $start, ?int $length=null, bool $preserveKeys=false): string|array

Wyodrębnia część tablicy lub łańcucha.

{=slice('hello', 1, 2)}         {* drukuje 'el' *}
{=slice(['a', 'b', 'c'], 1, 2)} {* drukuje ['b', 'c'] *}

Filtr działa jak funkcja PHP array_slice dla tablic lub mb_substr dla łańcuchów z awaryjnym przejściem do funkcji iconv_substr w trybie UTF-8.

Jeśli start jest dodatni, to sekwencja rozpoczyna się z przesunięciem o ten numer od początku tablicy/łańcucha. Jeśli jest ujemny, to sekwencja zaczyna się z przesunięciem o tyle samo od końca.

Jeśli parametr długość jest podany i jest dodatni, to sekwencja będzie zawierała tyle elementów. Jeśli do funkcji zostanie przekazany ujemny parametr długości, sekwencja będzie zawierała wszystkie elementy oryginalnej tablicy, zaczynając od pozycji startowej i kończąc na pozycji mniejszej niż długość elementów od końca tablicy. Jeśli parametr ten nie zostanie przekazany, sekwencja będzie zawierała wszystkie elementy oryginalnej tablicy począwszy od pozycji startowej.

Domyślnie filtr zmienia kolejność i resetuje klucz całkowity tablicy. To zachowanie można zmienić ustawiając preserveKeys na true. Klucze łańcuchowe są zawsze zachowywane, niezależnie od tego parametru.