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.

različica: 3.0