Nette Documentation Preview

syntax
Funkcije Latte
**************

.[perex]
V predlogah lahko poleg običajnih funkcij PHP uporabljamo tudi te dodatne.

.[table-latte-filters]
| `clamp`      | [omeji vrednost na dano območje |#clamp]
| `divisibleBy`| [preveri, ali je spremenljivka deljiva s številom |#divisibleBy]
| `even`       | [preveri, ali je dano število sodo |#even]
| `first`      | [vrne prvi element polja ali znak niza |#first]
| `group`      | [združi podatke po različnih kriterijih |#group]
| `hasBlock`   | [ugotovi obstoj bloka |#hasBlock]
| `last`       | [vrne zadnji element polja ali znak niza |#last]
| `odd`        | [preveri, ali je dano število liho |#odd]
| `slice`      | [izvleče del polja ali niza |#slice]


Uporaba
=======

Funkcije se uporabljajo enako kot običajne funkcije PHP in jih je mogoče uporabiti v vseh izrazih:

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

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

[Funkcije po meri |custom-functions] se lahko registrirajo na ta način:

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

V predlogi se nato kliče takole:

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


Funkcije
========


clamp(int|float $value, int|float $min, int|float $max): int|float .[method]
----------------------------------------------------------------------------
Omeji vrednost na dano vključno območje min in max.

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

Glejte tudi [filter clamp |filters#clamp].


divisibleBy(int $value, int $by): bool .[method]
------------------------------------------------
Preveri, ali je spremenljivka deljiva s številom.

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


even(int $value): bool .[method]
--------------------------------
Preveri, ali je dano število sodo.

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


first(string|iterable $value): mixed .[method]
----------------------------------------------
Vrne prvi element polja ali znak niza:

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

Glejte tudi [#last], [filter first |filters#first].


group(iterable $data, string|int|\Closure $by): array .[method]{data-version:3.0.16}
------------------------------------------------------------------------------------
Funkcija združi podatke po različnih kriterijih.

V tem primeru se vrstice v tabeli združujejo po stolpcu `categoryId`. Izpis je polje polj, kjer je ključ vrednost v stolpcu `categoryId`. [Preberite podrobna navodila |cookbook/grouping].

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

Glejte tudi filter [group |filters#group].


hasBlock(string $name): bool .[method]{data-version:3.0.10}
-----------------------------------------------------------
Ugotovi, ali blok z navedenim imenom obstaja:

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

Glejte tudi [preverjanje obstoja blokov |template-inheritance#Preverjanje obstoja blokov].


last(string|array $value): mixed .[method]
------------------------------------------
Vrne zadnji element polja ali znak niza:

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

Glejte tudi [#first], [filter last |filters#last].


odd(int $value): bool .[method]
-------------------------------
Preveri, ali je dano število liho.

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


slice(string|array $value, int $start, ?int $length=null, bool $preserveKeys=false): string|array .[method]
-----------------------------------------------------------------------------------------------------------
Izvleče del polja ali niza.

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

Funkcija deluje kot funkcija PHP `array_slice` za polja ali `mb_substr` za nize z rezervno funkcijo `iconv_substr` v načinu UTF‑8.

Če je `start` pozitiven, se bo zaporedje začelo zamaknjeno za to število od začetka polja/niza. Če je negativen, se bo zaporedje začelo zamaknjeno za toliko od konca.

Če je podan parameter `length` in je pozitiven, bo zaporedje vsebovalo toliko elementov. Če je tej funkciji posredovan negativen parameter `length`, bo zaporedje vsebovalo vse elemente prvotnega polja, začenši na poziciji `start` in končavši na poziciji, manjši za `length` elementov od konca polja. Če tega parametra ne podate, bo zaporedje vsebovalo vse elemente prvotnega polja, začenši na poziciji `start`.

Privzeto funkcija spremeni vrstni red in ponastavi celoštevilske ključe polja. To vedenje lahko spremenite z nastavitvijo `preserveKeys` na `true`. Nizovni ključi se vedno ohranijo, ne glede na ta parameter.

Funkcije Latte

V predlogah lahko poleg običajnih funkcij PHP uporabljamo tudi te dodatne.

clamp omeji vrednost na dano območje
divisibleBy preveri, ali je spremenljivka deljiva s številom
even preveri, ali je dano število sodo
first vrne prvi element polja ali znak niza
group združi podatke po različnih kriterijih
hasBlock ugotovi obstoj bloka
last vrne zadnji element polja ali znak niza
odd preveri, ali je dano število liho
slice izvleče del polja ali niza

Uporaba

Funkcije se uporabljajo enako kot običajne funkcije PHP in jih je mogoče uporabiti v vseh izrazih:

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

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

Funkcije po meri se lahko registrirajo na ta način:

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

V predlogi se nato kliče takole:

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

Funkcije

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

Omeji vrednost na dano vključno območje min in max.

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

Glejte tudi filter clamp.

divisibleBy(int $value, int $by)bool

Preveri, ali je spremenljivka deljiva s številom.

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

even(int $value): bool

Preveri, ali je dano število sodo.

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

first(string|iterable $value)mixed

Vrne prvi element polja ali znak niza:

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

Glejte tudi last, filter first.

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

Funkcija združi podatke po različnih kriterijih.

V tem primeru se vrstice v tabeli združujejo po stolpcu categoryId. Izpis je polje polj, kjer je ključ vrednost v stolpcu categoryId. Preberite podrobna navodila.

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

Glejte tudi filter group.

hasBlock(string $name): bool

Ugotovi, ali blok z navedenim imenom obstaja:

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

Glejte tudi preverjanje obstoja blokov.

last(string|array $value)mixed

Vrne zadnji element polja ali znak niza:

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

Glejte tudi first, filter last.

odd(int $value): bool

Preveri, ali je dano število liho.

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

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

Izvleče del polja ali niza.

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

Funkcija deluje kot funkcija PHP array_slice za polja ali mb_substr za nize z rezervno funkcijo iconv_substr v načinu UTF‑8.

Če je start pozitiven, se bo zaporedje začelo zamaknjeno za to število od začetka polja/niza. Če je negativen, se bo zaporedje začelo zamaknjeno za toliko od konca.

Če je podan parameter length in je pozitiven, bo zaporedje vsebovalo toliko elementov. Če je tej funkciji posredovan negativen parameter length, bo zaporedje vsebovalo vse elemente prvotnega polja, začenši na poziciji start in končavši na poziciji, manjši za length elementov od konca polja. Če tega parametra ne podate, bo zaporedje vsebovalo vse elemente prvotnega polja, začenši na poziciji start.

Privzeto funkcija spremeni vrstni red in ponastavi celoštevilske ključe polja. To vedenje lahko spremenite z nastavitvijo preserveKeys na true. Nizovni ključi se vedno ohranijo, ne glede na ta parameter.