Latte Fonksiyonları

Şablonlarda normal PHP fonksiyonlarının yanı sıra bu ek fonksiyonları da kullanabiliriz.

clamp değeri belirtilen aralıkla sınırlar
divisibleBy bir değişkenin bir sayıya bölünüp bölünemediğini kontrol eder
even verilen sayının çift olup olmadığını kontrol eder
first dizinin ilk öğesini veya karakter dizisinin ilk karakterini döndürür
group verileri çeşitli kriterlere göre gruplandırır
hasBlock bir bloğun varlığını kontrol eder
last dizinin son öğesini veya karakter dizisinin son karakterini döndürür
odd verilen sayının tek olup olmadığını kontrol eder
slice dizinin veya karakter dizisinin bir bölümünü çıkarır

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.

versiyon: 3.0