Latte funkce

V šablonách můžeme kromě běžných PHP funkcí používat i tyto další.

clamp ohraničí hodnotu do daného rozsahu
divisibleBy zkontroluje, zda je proměnná dělitelná číslem
even zkontroluje, zda je dané číslo sudé
first vrací první prvek pole nebo znak řetězce
group seskupí data podle různých kritérií
hasBlock zjistí existenci bloku
hasTemplate zjistí existenci šablony
last vrací poslední prvek pole nebo znak řetězce
odd zkontroluje, zda je dané číslo liché
slice extrahuje část pole nebo řetězce

Použití

Funkce se používají stejně jako běžné PHP funkce a lze je použít ve všech výrazech:

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

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

Vlastní funkce lze registrovat tímto způsobem:

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

V šabloně se potom volá takto:

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

Funkce

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

Ohraničí hodnotu do daného inkluzivního rozsahu min a max.

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

Viz také filtr clamp.

divisibleBy (int $value, int $by)bool

Zkontroluje, zda je proměnná dělitelná číslem.

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

even (int $value): bool

Zkontroluje, zda je dané číslo sudé.

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

first (string|iterable $value)mixed

Vrací první prvek pole nebo znak řetězce:

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

Viz také last, filtr first.

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

Funkce seskupí data podle různých kritérií.

V tomto příkladu se řádky v tabulce seskupují podle sloupce categoryId. Výstupem je iterovatelná struktura skupin, kde klíčem je hodnota ve sloupci categoryId. Přečtěte si podrobný návod.

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

Viz také filtr group.

hasBlock (string $name): bool

Zjistí, zda blok uvedeného jména existuje:

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

Viz také kontrola existence bloků.

hasTemplate (string $name)bool

Zjistí, zda existuje šablona uvedeného jména:

{if hasTemplate('foo.latte')} ... {/if}

last (string|array $value)mixed

Vrací poslední prvek pole nebo znak řetězce:

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

Viz také first, filtr last.

odd (int $value): bool

Zkontroluje, zda je dané číslo liché.

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

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

Extrahuje část pole, řetězce nebo iterátoru.

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

Funkce funguje jako PHP funkce array_slice pro pole nebo mb_substr pro řetězce s fallbackem na funkci iconv_substr v režimu UTF‑8. Pokud je vstupem obecný iterátor, je převeden na generátor, který vrací vybrané prvky.

Pokud je start nezáporný, posloupnost začne posunutá o tento počet od začátku pole/řetězce. Pokud je záporný, posloupnost začne posunutá o tolik od konce.

Pokud je zadaný parametr length a je kladný, posloupnost bude obsahovat tolik prvků. Pokud je vstup kratší než length, budou přítomny pouze dostupné prvky. Pokud je do této funkce předán záporný parametr length, posloupnost bude obsahovat všechny prvky původního pole, začínající na pozici start a končící na pozici menší na length prvků od konce pole. Pokud tento parametr nezadáte, posloupnost bude obsahovat všechny prvky původního pole, začínající na pozici start.

Ve výchozím nastavení funkce změní pořadí a resetuje celočíselné klíče pole. Toto chování lze změnit nastavením preserveKeys na true. Řetězcové klíče jsou vždy zachovány, bez ohledu na tento parametr.

verze: 3.x 2.x