Latte fonksiyonları
Şablonlarda, alışılmış PHP fonksiyonlarının yanı sıra şu fonksiyonları da kullanabilirsiniz.
Kullanım
Fonksiyonlar, alışılmış PHP fonksiyonlarıyla aynı şekilde kullanılır ve tüm ifadelerde kullanılabilir:
<p>{clamp($num, 1, 100)}</p>
{if odd($num)} ... {/if}
Özel fonksiyonlar şöyle kaydedilebilir:
$latte = new Latte\Engine;
$latte->addFunction('shortify', fn(string $s, int $len = 10) => mb_substr($s, 0, $len));
Şablonda ise şöyle çağrılır:
<p>{shortify($text)}</p>
<p>{shortify($text, 100)}</p>
Fonksiyonlar
clamp (int|float $value, int|float $min, int|float $max): int|float
Bir değeri, min ve max ile verilen kapsayıcı aralığa sıkıştırır.
{=clamp($level, 0, 255)}
Ayrıca bkz. clamp filtresi.
divisibleBy (int $value, int $by): bool
Bir değişkenin bir sayıya bölünebilir olup olmadığını denetler.
{if divisibleBy($num, 5)} ... {/if}
even (int $value): bool
Verilen sayının çift olup olmadığını denetler.
{if even($num)} ... {/if}
first (string|iterable $value): mixed
Bir dizinin ilk öğesini veya bir dizenin ilk karakterini döndürür:
{=first([1, 2, 3, 4])} {* 1 yazdırır *}
{=first('abcd')} {* 'a' yazdırır *}
Ayrıca bkz. last(), first filtresi.
group (iterable $data, string|int|\Closure $by): iterable
Bu fonksiyon veriyi farklı ölçütlere göre gruplar.
Bu örnekte tablodaki satırlar categoryId sütununa göre gruplanır. Çıktı, anahtarı categoryId
sütunundaki değer olan, yinelenebilir bir gruplar yapısıdır. Ayrıntılı kılavuzu okuyun.
{foreach group($items, categoryId) as $categoryId => $categoryItems}
<ul>
{foreach $categoryItems as $item}
<li>{$item->name}</li>
{/foreach}
</ul>
{/foreach}
Ayrıca bkz. group filtresi.
hasBlock (string $name): bool
Belirtilen adda bir bloğun var olup olmadığını denetler:
{if hasBlock(header)} ... {/if}
Ayrıca bkz. blok varlığı denetimi.
hasTemplate (string $name): bool
Belirtilen adda bir şablonun var olup olmadığını belirler:
{if hasTemplate('foo.latte')} ... {/if}
last (string|array $value): mixed
Bir dizinin son öğesini veya bir dizenin son karakterini döndürür:
{=last([1, 2, 3, 4])} {* 4 yazdırır *}
{=last('abcd')} {* 'd' yazdırır *}
Ayrıca bkz. first(), last filtresi.
odd (int $value): bool
Verilen sayının tek olup olmadığını denetler.
{if odd($num)} ... {/if}
slice (string|iterable $value, int $start, ?int $length=null, bool $preserveKeys=false): string|array|\Generator
Bir dizinin, dizenin veya yineleyicinin bir dilimini çıkarır.
{=slice('hello', 1, 2)} {* 'el' yazdırır *}
{=slice(['a', 'b', 'c'], 1, 2)} {* ['b', 'c'] yazdırır *}
Fonksiyon, diziler için PHP'nin array_slice, dizeler için ise mb_substr fonksiyonu gibi
çalışır; UTF‑8 modunda iconv_substr fonksiyonuna geri düşer. Girdi genel bir yineleyiciyse, dilimlenmiş
öğeleri veren bir generator'a dönüştürülür.
start negatif değilse, dizi dizinin/dizenin başından itibaren o kaydırmadan başlar. start
negatifse, dizi sondan o kadar uzaktan başlar.
length verilmişse ve pozitifse, dizide en fazla o kadar öğe olur. Girdi length'ten kısaysa
yalnızca var olan öğeler bulunur. length verilmişse ve negatifse, dizi girdinin sonundan o kadar öğe önce
durur. Atlanırsa, dizi start'tan girdinin sonuna kadar her şeyi içerir.
Fonksiyon varsayılan olarak tam sayı dizi anahtarlarını yeniden düzenler ve sıfırlar. Bu davranış,
preserveKeys true yapılarak değiştirilebilir. Dize anahtarlar, bu parametreden bağımsız olarak her zaman
korunur.