Latte funkce
V šablonách můžeme kromě běžných PHP funkcí používat i tyto další.
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.