Latte Fonksiyonları
Şablonlarda normal PHP fonksiyonlarının yanı sıra bu ek fonksiyonları da kullanabiliriz.
Kullanım
Fonksiyonlar normal PHP fonksiyonları gibi kullanılır ve tüm ifadelerde kullanılabilir:
<p>{clamp($num, 1, 100)}</p>
{if odd($num)} ... {/if}
Özel fonksiyonlar şu şekilde kaydedilebilir:
$latte = new Latte\Engine;
$latte->addFunction('shortify', fn(string $s, int $len = 10) => mb_substr($s, 0, $len));
Şablonda daha sonra şu şekilde ç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
Değeri verilen kapsayıcı min ve max aralığıyla sınırlar.
{=clamp($level, 0, 255)}
Ayrıca bkz. clamp filtresi.
divisibleBy (int $value, int $by): bool
Bir değişkenin bir sayıya bölünüp bölünemediğini kontrol eder.
{if divisibleBy($num, 5)} ... {/if}
even (int $value): bool
Verilen sayının çift olup olmadığını kontrol eder.
{if even($num)} ... {/if}
first (string|iterable $value): mixed
Dizinin ilk öğesini veya karakter dizisinin 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): array
Fonksiyon, verileri çeşitli kriterlere göre gruplandırır.
Bu örnekte, tablodaki satırlar categoryId
sütununa göre gruplandırılır. Çıktı, anahtarın
categoryId
sütunundaki değer olduğu bir dizi dizisidir. Detaylı 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 addaki bloğun var olup olmadığını kontrol eder:
{if hasBlock(header)} ... {/if}
Ayrıca bkz. blokların varlığını kontrol etme.
last (string|array $value): mixed
Dizinin son öğesini veya karakter dizisinin 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ı kontrol eder.
{if odd($num)} ... {/if}
slice (string|array $value, int $start, ?int $length=null, bool $preserveKeys=false): string|array
Bir dizinin veya karakter dizisinin bir bölümünü çıkarır.
{=slice('merhaba', 1, 2)} {* 'er' yazdırır *}
{=slice(['a', 'b', 'c'], 1, 2)} {* ['b', 'c'] yazdırır *}
Filtre, diziler için PHP array_slice
fonksiyonu gibi veya karakter dizileri için mb_substr
fonksiyonu gibi çalışır ve UTF-8 modunda iconv_substr
fonksiyonuna geri döner.
Eğer başlangıç pozitifse, dizi/karakter dizisinin başından itibaren bu kadar kaydırılarak başlar. Eğer negatifse, sondan bu kadar kaydırılarak başlar.
Eğer length parametresi belirtilmişse ve pozitifse, dizi bu kadar öğe içerecektir. Eğer bu fonksiyona negatif bir length parametresi geçirilirse, dizi başlangıç pozisyonundan başlayıp dizinin sonundan length kadar öğe öncesinde biten tüm öğeleri içerecektir. Eğer bu parametre belirtilmezse, dizi başlangıç pozisyonundan itibaren orijinal dizinin tüm öğelerini içerecektir.
Varsayılan olarak, filtre sırayı değiştirir ve tamsayı dizi anahtarlarını sıfırlar. Bu davranış, preserveKeys'i true olarak ayarlayarak değiştirilebilir. Karakter dizisi anahtarları, bu parametreden bağımsız olarak her zaman korunur.