Latte filtreleri
Şablonlarda, veriyi son biçimine dönüştürmeye ya da yeniden biçimlendirmeye yardım eden fonksiyonlar kullanabiliriz. Onlara filtre diyoruz.
capitalize |
küçük harf, her sözcüğün ilk harfi büyük |
firstLower |
ilk harfi küçük harfe çevirir |
firstUpper |
ilk harfi büyük harfe çevirir |
lower |
küçük harfe çevirir |
upper |
büyük harfe çevirir |
ceil |
bir sayıyı verilen duyarlıkta yukarı yuvarlar |
floor |
bir sayıyı verilen duyarlıkta aşağı yuvarlar |
round |
bir sayıyı verilen duyarlıkta yuvarlar |
accept |
akıllı niteliklerin yeni davranışını kabul eder |
toggle |
bir HTML niteliğinin varlığını açıp kapatır |
escapeUrl |
bir URL'deki parametreyi kaçırır |
noescape |
bir değişkeni kaçırmadan yazdırır |
query |
bir URL'de sorgu dizesi üretir |
Ayrıca HTML (escapeHtml ve escapeHtmlComment), XML (escapeXml), JavaScript
(escapeJs), CSS (escapeCss) ve iCalendar (escapeICal) için de kaçış filtreleri vardır;
Latte, bağlama duyarlı kaçış sayesinde
onları kendisi kullanır ve sizin yazmanıza gerek yoktur.
checkUrl |
bir URL adresini tehlikeli girdilerden arındırır |
nocheck |
otomatik URL arındırmasını engeller |
Latte, src ve href niteliklerini otomatik denetler, bu yüzden checkUrl
filtresini kullanmanız neredeyse hiç gerekmez.
Yerleşik tüm filtreler UTF‑8 kodlamalı dizeler için tasarlanmıştır.
Kullanım
Filtreler boru simgesinden sonra yazılır (önünde boşluğa izin verilir):
<h1>{$heading|upper}</h1>
Filtreler zincirlenebilir ve soldan sağa sırayla uygulanırlar:
<h1>{$heading|lower|capitalize}</h1>
Parametreler, filtre adından sonra iki nokta üst üste veya virgülle ayrılarak girilir:
<h1>{$heading|truncate:20,''}</h1>
Filtreler bir ifadeye de uygulanabilir:
{var $name = ($title|upper) . ($subtitle|lower)}
Özel filtreler şöyle kaydedilebilir:
$latte = new Latte\Engine;
$latte->addFilter('shortify', fn(string $s, int $len = 10) => mb_substr($s, 0, $len));
Şablonda ise şöyle çağrılır:
<p>{$text|shortify}</p>
<p>{$text|shortify:100}</p>
Nullsafe filtreler
Herhangi bir filtre, | yerine ?| kullanılarak nullsafe yapılabilir. Değer null ise
filtre çalıştırılmaz ve null döndürülür. Zincirdeki sonraki filtreler de atlanır.
Bu, değer null ise atlanan HTML nitelikleriyle birlikte kullanışlıdır.
<div title={$title?|upper}>
{* $title null ise: <div> *}
{* $title 'hello' ise: <div title="HELLO"> *}
Filtreler
accept
Filtre, Latte 3.0'dan geçiş sırasında, nitelik davranışı değişikliğini gözden geçirdiğinizi ve kabul ettiğinizi onaylamak için kullanılır. Değeri değiştirmez.
Bu geçici bir araçtır. Geçiş tamamlandığında ve geçiş uyarıları kapatıldığında bu filtreyi şablonlarınızdan kaldırmalısınız.
batch (int $length, mixed $rest=null): Generator
Doğrusal veriyi tablo biçiminde listelemeyi kolaylaştıran bir filtre. Belirtilen sayıda öğe içeren dizilerin bir generator'ını döndürür. İkinci bir parametre verirseniz, son satırdaki eksik öğeleri doldurmak için kullanılır.
{var $items = ['a', 'b', 'c', 'd', 'e']}
<table>
{foreach ($items|batch: 3, 'No item') as $row}
<tr>
{foreach $row as $column}
<td>{$column}</td>
{/foreach}
</tr>
{/foreach}
</table>
Şunu üretir:
<table>
<tr>
<td>a</td>
<td>b</td>
<td>c</td>
</tr>
<tr>
<td>d</td>
<td>e</td>
<td>No item</td>
</tr>
</table>
Ayrıca bkz. group ve iterateWhile etiketi.
breakLines
Her satır sonu karakterinin önüne bir HTML <br> etiketi ekler.
{var $s = "Text & with \n newline"}
{$s|breakLines} {* "Text & with <br>\n newline" yazdırır *}
bytes (int $precision=2)
Bayt cinsinden boyutu insanın okuyabileceği biçime çevirir. Yerel ayar belirlenmişse, ona karşılık gelen ondalık ve binlik ayırıcılar kullanılır.
{$size|bytes} {* 0 B, 1.25 GB, … *}
{$size|bytes:0} {* 10 B, 1 GB, … *}
ceil (int $precision=0)
Bir sayıyı verilen duyarlıkta yukarı yuvarlar.
{=3.4|ceil} {* 4 yazdırır *}
{=135.22|ceil:1} {* 135.3 yazdırır *}
{=135.22|ceil:3} {* 135.22 yazdırır *}
capitalize
Sözcükler büyük harfle başlar, kalan tüm karakterler küçük harf olur. PHP mbstring uzantısını
gerektirir.
{='i like LATTE'|capitalize} {* 'I Like Latte' yazdırır *}
Ayrıca bkz. firstLower, firstUpper, lower, upper.
checkUrl
URL arındırmasını zorunlu kılar. URL'nin güvenli bir şema (http, https, ftp,
mailto, tel, sms) kullanıp kullanmadığını ya da göreli bir bağlantı olup
olmadığını denetler ve güvenlik riski oluşturabilecek javascript: gibi tehlikeli şemaları engeller.
{var $link = 'javascript:window.close()'}
<a data-href={$link|checkUrl}>checked</a>
<a data-href={$link}>unchecked</a>
Şunu üretir:
<a data-href="">checked</a>
<a data-href="javascript:window.close()">unchecked</a>
Ayrıca bkz. nocheck.
clamp (int|float $min, int|float $max)
Bir değeri, min ve max ile verilen kapsayıcı aralığa sıkıştırır.
{$level|clamp: 0, 255}
Fonksiyon olarak da vardır.
column (string|int|null $columnKey, string|int|null $indexKey=null)
Çok boyutlu bir diziden tek bir $columnKey sütununun değerlerini yeni bir dizi olarak döndürür. Özellik
değerlerini çıkarmak için nesne dizilerinde de kullanılabilir.
{var $users = [
[id: 30, name: 'John', age: 30],
[id: 32, name: 'Jane', age: 25],
[id: 33, age: 35],
]}
{$users|column: 'name'}
{* ['John', 'Jane'] döndürür *}
{$users|column: 'name', 'id'}
{* [30 => 'John', 32 => 'Jane'] döndürür *}
Sütun anahtarı olarak null verirseniz, diziyi $indexKey'e göre yeniden indeksler.
commas (?string $lastGlue=null)
Dizi öğelerini virgül ve boşlukla (', ') birleştirir. Öğeleri insanın okuyabileceği biçimde listelemek
için kullanışlı bir kısayol.
{var $items = ['apples', 'oranges', 'bananas']}
{$items|commas}
{* 'apples, oranges, bananas' yazdırır *}
Son öğe çifti için kendi ayırıcınızı da verebilirsiniz:
{$items|commas: ' and '}
{* 'apples, oranges and bananas' yazdırır *}
{=['PHP', 'JavaScript', 'Python']|commas: ', or '}
{* 'PHP, JavaScript, or Python' yazdırır *}
Ayrıca bkz. implode.
dataStream (?string $type=null)
İçeriği data URI şemasına dönüştürür. Bu, dış dosyalara bağlantı vermeye gerek kalmadan görselleri HTML'e veya
CSS'e gömmeyi sağlar. $type null ise MIME tipi otomatik saptanır.
$img = Image::fromFile('image.gif') değişkeninde bir görselimiz olsun, o zaman
<img src={$img|dataStream}>
Örneğin şunu üretir:
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUA
AAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO
9TXL0Y4OHwAAAABJRU5ErkJggg==">
PHP fileinfo uzantısını gerektirir.
date (string $format='j. n. Y')
Bir tarihi ve saati, PHP date fonksiyonunun kullandığı maskeye göre biçimlendirir.
Filtre, tarihi bir UNIX marka zamanı, bir dize, bir DateTimeInterface veya bir DateInterval nesnesi
olarak kabul eder.
{$today|date:'j. n. Y'}
Ayrıca bkz. localDate.
escapeUrl
Bir değişkeni, bir URL'de parametre olarak kullanılmak üzere kaçırır.
<a href="http://example.com/{$name|escapeUrl}">{$name}</a>
Ayrıca bkz. query.
explode (string
$separator='')
Bir dizeyi ayırıcıya göre diziye böler. split için takma ad.
{='one,two,three'|explode:','} {* ['one', 'two', 'three'] döndürür *}
Ayırıcı boş bir dizeyse (varsayılan değer), girdi tek tek karakterlere bölünür:
{='123'|explode} {* ['1', '2', '3'] döndürür *}
split takma adını da kullanabilirsiniz:
{='1,2,3'|split:','} {* ['1', '2', '3'] döndürür *}
Ayrıca bkz. implode.
filter (callable $predicate): iterable
Bir dizinin veya yineleyicinin öğelerini süzer ve yalnızca yüklemin true döndürdüğü öğeleri tutar.
Anahtarlar korunur.
{foreach ($people|filter: fn($person) => $person->age >= 18) as $adult}
<p>{$adult->name}</p>
{/foreach}
first
Bir dizinin ilk öğesini veya bir dizenin ilk karakterini döndürür:
{=[1, 2, 3, 4]|first} {* 1 yazdırır *}
{='abcd'|first} {* 'a' yazdırır *}
floor (int $precision=0)
Bir sayıyı verilen duyarlıkta aşağı yuvarlar.
{=3.5|floor} {* 3 yazdırır *}
{=135.79|floor:1} {* 135.7 yazdırır *}
{=135.79|floor:3} {* 135.79 yazdırır *}
firstLower
İlk harfi küçük harfe çevirir. PHP mbstring uzantısını gerektirir.
{='The Latte'|firstLower} {* 'the Latte' yazdırır *}
Ayrıca bkz. capitalize, firstUpper, lower, upper.
firstUpper
İlk harfi büyük harfe çevirir. PHP mbstring uzantısını gerektirir.
{='the latte'|firstUpper} {* 'The latte' yazdırır *}
Ayrıca bkz. capitalize, firstLower, lower, upper.
group (string|int|\Closure $by): iterable
Filtre, veriyi çeşitli ö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 ($items|group: categoryId) as $categoryId => $categoryItems}
<ul>
{foreach $categoryItems as $item}
<li>{$item->name}</li>
{/foreach}
</ul>
{/foreach}
Ayrıca bkz. batch, group fonksiyonu ve iterateWhile etiketi.
implode (string $glue='')
Dizideki öğelerin birleştirilmesiyle oluşan bir dize döndürür. join için takma ad.
{=[1, 2, 3]|implode} {* '123' yazdırır *}
{=[1, 2, 3]|implode:'|'} {* '1|2|3' yazdırır *}
join takma adını da kullanabilirsiniz:
{=[1, 2, 3]|join} {* '123' yazdırır *}
indent (int $level=1, string
$chars="\t")
Metni soldan, verilen sayıda tabulatör veya ikinci argümanda belirtilen başka karakterler kadar girintiler. Boş satırlar girintilenmez.
<div>
{block |indent}
<p>Hello</p>
{/block}
</div>
Şunu üretir:
<div>
<p>Hello</p>
</div>
last
Bir dizinin son öğesini veya bir dizenin son karakterini döndürür:
{=[1, 2, 3, 4]|last} {* 4 yazdırır *}
{='abcd'|last} {* 'd' yazdırır *}
length
Bir dizenin veya dizinin uzunluğunu döndürür.
- dizelerde UTF‑8 karakter cinsinden uzunluğu döndürür
- dizilerde öğe sayısını döndürür
- Countable arayüzünü uygulayan nesnelerde
count()metodunun dönüş değerini kullanır - Traversable arayüzünü uygulayan nesnelerde
iterator_count()fonksiyonunun dönüş değerini kullanır
{if ($users|length) > 10}
...
{/if}
localDate (?string $format=null, ?string $date=null, ?string $time=null)
Tarihi ve saati yerel ayara göre biçimlendirir; böylece
zaman verisi farklı diller ve bölgeler arasında tutarlı ve yerelleştirilmiş gösterilir. Filtre, tarihi bir UNIX marka
zamanı, dize veya DateTimeInterface nesnesi olarak kabul eder.
{$date|localDate} {* 15. dubna 2024 *}
{$date|localDate: format: yM} {* 4/2024 *}
{$date|localDate: date: medium} {* 15. 4. 2024 *}
Filtreyi parametresiz kullanırsanız, tarihi long düzeyinde yazdırır, bkz. aşağısı.
a) format kullanarak
format parametresi, hangi zaman bileşenlerinin gösterileceğini anlatır. Harf kodları kullanır; yineleme
sayısı çıktının genişliğini etkiler:
| Yıl | y / yy / yyyy |
2024 / 24 / 2024 |
| Ay | M / MM / MMM / MMMM |
8 / 08 / Aug / August |
| Gün | d / dd / E / EEEE |
1 / 01 / Sun / Sunday |
| Saat | j / H / h |
yeğlenen / 24 saatlik / 12 saatlik |
| Dakika | m / mm |
5 / 05 (saniyeyle birleştiğinde 2 basamak) |
| Saniye | s / ss |
8 / 08 (dakikayla birleştiğinde 2 basamak) |
Formattaki kodların sırası önemli değildir, çünkü bileşenlerin sırası yerel ayarın uzlaşımlarına göre
gösterilir. Böylece format yerel ayardan bağımsızdır. Örneğin yyyyMMMMd formatı en_US yerel
ayarında April 15, 2024, cs_CZ yerel ayarında ise 15. dubna 2024 üretir:
| yerel ayar: | cs_CZ | en_US |
|---|---|---|
format: 'dMy' |
10. 8. 2024 | 8/10/2024 |
format: 'yM' |
8/2024 | 8/2024 |
format: 'yyyyMMMM' |
srpen 2024 | August 2024 |
format: 'MMMM' |
srpen | August |
format: 'jm' |
17:22 | 5:22 PM |
format: 'Hm' |
17:22 | 17:22 |
format: 'hm' |
5:22 odp. | 5:22 PM |
b) hazır stilleri kullanarak
date ve time parametreleri, tarihin ve saatin ne kadar ayrıntılı gösterileceğini belirler.
Birkaç düzey arasından seçebilirsiniz: full, long, medium, short.
Yalnızca tarihi, yalnızca saati ya da ikisini birden göstermeyi seçebilirsiniz:
| yerel ayar: | cs_CZ | en_US |
|---|---|---|
date: short |
23.01.78 | 1/23/78 |
date: medium |
23. 1. 1978 | Jan 23, 1978 |
date: long |
23. ledna 1978 | January 23, 1978 |
date: full |
pondělí 23. ledna 1978 | Monday, January 23, 1978 |
time: short |
8:30 | 8:30 AM |
time: medium |
8:30:59 | 8:30:59 AM |
time: long |
8:30:59 SEČ | 8:30:59 AM GMT+1 |
date: short, time: short |
23.01.78 8:30 | 1/23/78, 8:30 AM |
date: medium, time: short |
23. 1. 1978 8:30 | Jan 23, 1978, 8:30 AM |
date: long, time: short |
23. ledna 1978 v 8:30 | January 23, 1978 at 8:30 AM |
Tarihte, bugüne yakın tarihlerde yesterday, today veya tomorrow gösteren, diğer
durumlarda standart biçimde gösteren relative- ön ekini de kullanabilirsiniz (örneğin
relative-short).
{$date|localDate: date: relative-short} {* yesterday *}
Ayrıca bkz. date.
lower
Bir dizeyi küçük harfe çevirir. PHP mbstring uzantısını gerektirir.
{='LATTE'|lower} {* 'latte' yazdırır *}
Ayrıca bkz. capitalize, firstLower, firstUpper, upper.
map (callable $transformer): iterable
Bir dizinin veya yineleyicinin her öğesini bir callback ile dönüştürür ve yeni bir yineleyici döndürür. filter filtresinin karşılığıdır. Anahtarlar korunur.
{=($users|map: fn($user) => $user->name)|implode: ', '} {* John, Mary, Paul *}
Ayrıca bkz. filter.
nocheck
Otomatik URL arındırmasını engeller. Latte, bir URL'nin güvenli bir şema (http, https,
ftp, mailto, tel, sms gibi) kullanıp kullanmadığını ya da göreli bir
bağlantı olup olmadığını otomatik denetler ve
olası tehlikeli olanları engeller.
Bağlantı javascript: veya data: gibi başka bir şema kullanıyorsa ve içeriğinden eminseniz,
denetimi |nocheck ile kapatabilirsiniz.
{var $link = 'javascript:window.close()'}
<a href={$link}>checked</a>
<a href={$link|nocheck}>unchecked</a>
Şunu üretir:
<a href="">checked</a>
<a href="javascript:window.close()">unchecked</a>
Ayrıca bkz. checkUrl.
noescape
Otomatik kaçışı kapatır.
{var $trustedHtmlString = '<b>hello</b>'}
Escaped: {$trustedHtmlString}
Unescaped: {$trustedHtmlString|noescape}
Şunu üretir:
Escaped: <b>hello</b>
Unescaped: <b>hello</b>
noescape filtresinin yanlış kullanımı bir XSS güvenlik açığına yol açabilir! Ne
yaptığınızdan ve yazdırdığınız dizenin güvenilir bir kaynaktan geldiğinden kesinlikle emin olmadıkça asla
kullanmayın.
number (int $decimals=0, string
$decPoint='.', string $thousandsSep=',')
Bir sayıyı belirtilen sayıda ondalık basamağa biçimlendirir. Yerel ayar belirlenmişse, ona karşılık gelen ondalık ve binlik ayırıcılar kullanılır.
{1234.20|number} {* 1,234 *}
{1234.20|number:1} {* 1,234.2 *}
{1234.20|number:2} {* 1,234.20 *}
{1234.20|number:2, ',', ' '} {* 1 234,20 *}
number (string $format)
format parametresi, sayıların görünümünü tam olarak ihtiyacınıza göre tanımlamanızı sağlar. Bunun
için yerel ayarın belirlenmiş olması gerekir. Format, tam
açıklaması DecimalFormat
dokümantasyonunda bulunabilecek birkaç özel karakterden oluşur:
0zorunlu basamak, sıfır olsa bile her zaman gösterilir#isteğe bağlı basamak, yalnızca sayının o konumda gerçekten bir basamağı varsa gösterilir@anlamlı basamak, sayıyı belirli sayıda anlamlı basamakla göstermeye yardım eder.ondalık ayırıcının nerede olacağını belirtir (ülkeye göre nokta veya virgül),basamak gruplarını, çoğunlukla binlikleri ayırmaya yarar%sayıyı 100 ile çarpar ve yüzde işaretini ekler
Birkaç örneğe bakalım. İlk örnekte iki ondalık basamak zorunlu, ikincisinde isteğe bağlıdır. Üçüncü örnek soldan ve sağdan sıfırla doldurmayı gösterir, dördüncüsü yalnızca var olan basamakları gösterir:
{1234.5|number: '#,##0.00'} {* 1,234.50 *}
{1234.5|number: '#,##0.##'} {* 1,234.5 *}
{1.23 |number: '000.000'} {* 001.230 *}
{1.2 |number: '##.##'} {* 1.2 *}
Anlamlı basamaklar, ondalık noktadan bağımsız olarak kaç basamağın gösterileceğini belirler ve gerekirse yuvarlar:
{1234|number: '@@'} {* 1200 *}
{1234|number: '@@@'} {* 1230 *}
{1234|number: '@@@#'} {* 1234 *}
{1.2345|number: '@@@'} {* 1.23 *}
{0.00123|number: '@@'} {* 0.0012 *}
Bir sayıyı yüzde olarak göstermenin kolay yolu. Sayı 100 ile çarpılır ve % işareti eklenir:
{0.1234|number: '#.##%'} {* 12.34% *}
Pozitif ve negatif sayılar için farklı bir format tanımlayabiliriz; ; karakteriyle ayrılır. Böylece
örneğin pozitif sayılar + işaretiyle gösterilebilir:
{42|number: '#.##;(#.##)'} {* 42 *}
{-42|number: '#.##;(#.##)'} {* (42) *}
{42|number: '+#.##;-#.##'} {* +42 *}
{-42|number: '+#.##;-#.##'} {* -42 *}
Sayıların gerçek görünümünün ülke ayarlarına göre değişebileceğini unutmayın. Örneğin bazı ülkelerde ondalık ayırıcı olarak nokta yerine virgül kullanılır. Bu filtre bunu otomatik hesaba katar, bu yüzden dert etmenize gerek yoktur.
padLeft (int $length, string
$append=' ')
Bir dizeyi veya sayıyı, soldan başka bir dizeyle belirli bir uzunluğa doldurur.
{='hello'|padLeft: 10, '123'} {* '12312hello' yazdırır *}
{=123|padLeft: 5, '0'} {* '00123' yazdırır *}
padRight (int $length, string
$append=' ')
Bir dizeyi veya sayıyı, sağdan başka bir dizeyle belirli bir uzunluğa doldurur.
{='hello'|padRight: 10, '123'} {* 'hello12312' yazdırır *}
{=123|padRight: 5, '0'} {* '12300' yazdırır *}
query
Bir URL'de dinamik olarak sorgu dizesi üretir:
<a href="http://example.com/?{[name: 'John Doe', age: 43]|query}">click</a>
<a href="http://example.com/?search={$search|query}">search</a>
Şunu üretir:
<a href="http://example.com/?name=John+Doe&age=43">click</a>
<a href="http://example.com/?search=Foo+Bar">search</a>
Değeri null olan anahtarlar atlanır.
Ayrıca bkz. escapeUrl.
random
Bir dizinin rastgele bir öğesini veya bir dizenin rastgele bir karakterini döndürür:
{=[1, 2, 3, 4]|random} {* örneğin şunu yazdırır: 3 *}
{='abcd'|random} {* örneğin şunu yazdırır: 'b' *}
repeat (int $count)
Dizeyi x kez yineler.
{='hello'|repeat: 3} {* 'hellohellohello' yazdırır *}
replace (string|array $search, string|array
$replace='')
Arama dizesinin tüm geçişlerini değiştirme dizesiyle değiştirir.
{='hello world'|replace: 'world', 'friend'} {* 'hello friend' yazdırır *}
Aynı anda birden fazla değiştirme yapılabilir:
{='hello world'|replace: [h => l, l => h]} {* 'lehho worhd' yazdırır *}
replaceRE (string $pattern, string
$replacement='')
Düzenli ifadeyle arama ve değiştirme yapar.
{='hello world'|replaceRE: '/l.*/', 'l'} {* 'hel' yazdırır *}
reverse (bool $preserveKeys=false)
Verilen dizeyi veya diziyi ters çevirir.
{var $s = 'Nette'}
{$s|reverse} {* 'etteN' yazdırır *}
{var $a = ['N', 'e', 't', 't', 'e']}
{$a|reverse} {* ['e', 't', 't', 'e', 'N'] döndürür *}
round (int $precision=0)
Bir sayıyı verilen duyarlıkta yuvarlar.
{=3.4|round} {* 3 yazdırır *}
{=3.5|round} {* 4 yazdırır *}
{=135.79|round:1} {* 135.8 yazdırır *}
{=135.79|round:3} {* 135.79 yazdırır *}
slice (int $start, ?int $length=null, bool $preserveKeys=false)
Bir dizinin, dizenin veya yineleyicinin bir dilimini çıkarır.
{='hello'|slice: 1, 2} {* 'el' yazdırır *}
{=['a', 'b', 'c']|slice: 1, 2} {* ['b', 'c'] yazdırır *}
Filtre, diziler için PHP'nin array_slice, dizeler için mb_substr fonksiyonu gibi çalışır.
Yineleyicilerde bir generator döndürür; öğeler kaynaktan tek tek tüketilir ve sınıra ulaşıldığında okuma durur.
Yineleyicinin tamamı asla belleğe yüklenmez.
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.
Filtre 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.
Ayrıca bkz. limit.
limit (int $length)
Bir dizinin, dizenin veya yineleyicinin uzunluğunu sınırlar. Dizilerde ve yineleyicilerde anahtarlar korunur. Dizelerde UTF-8'e saygı gösterir.
{foreach ($items|limit: 5) as $item}
...
{/foreach}
{$text|limit: 100}
sort (?Closure $comparison=null, string|int|\Closure|null $by=null, string|int|\Closure|bool $byKey=false)
Filtre, bir dizinin veya yineleyicinin öğelerini sıralar ve ilişkisel anahtarlarını korur. Bir yerel ayar belirlenmişse ve özel bir karşılaştırma fonksiyonu verilmemişse, sıralama onun kurallarını izler.
{foreach ($names|sort) as $name}
...
{/foreach}
Ters sırada sıralanmış dizi:
{foreach ($names|sort|reverse) as $name}
...
{/foreach}
Sıralama için kendi karşılaştırma fonksiyonunuzu belirtebilirsiniz (örnek, sıralamayı büyükten küçüğe nasıl ters çevireceğinizi gösterir):
{var $reverted = ($names|sort: fn($a, $b) => $b <=> $a)}
|sort filtresi öğeleri anahtarlara göre sıralamayı da sağlar:
{foreach ($names|sort: byKey: true) as $name}
...
{/foreach}
Bir tabloyu belirli bir sütuna göre sıralamanız gerekirse by parametresini kullanabilirsiniz. Örnekteki
'name' değeri, $item'ın dizi mi nesne mi olduğuna göre sıralamanın $item->name ya
da $item['name'] üzerinden yapılacağını belirtir:
{foreach ($items|sort: by: 'name') as $item}
{$item->name}
{/foreach}
Sıralanacak değeri belirleyen bir callback fonksiyonu da tanımlayabilirsiniz:
{foreach ($items|sort: by: fn($item) => $item->category->name) as $item}
{$item->name}
{/foreach}
byKey parametresi de aynı şekilde kullanılabilir.
spaceless
Çıktıdan gereksiz boşlukları kaldırır. Kullanımdan kaldırılmış strip takma adını da
kullanabilirsiniz, ama spaceless yeğlenir.
{block |spaceless}
<ul>
<li>Hello</li>
</ul>
{/block}
Şunu üretir:
<ul><li>Hello</li></ul>
stripHtml
HTML'i düz metne dönüştürür. Yani HTML etiketlerini kaldırır ve HTML varlıklarını metin karakterlerine çevirir.
{='<p>one < two</p>'|stripHtml} {* 'one < two' yazdırır *}
Ortaya çıkan düz metin doğal olarak HTML etiketlerini temsil eden karakterler içerebilir; örneğin
'<p>'|stripHtml, <p>'ye dönüşür. Ortaya çıkan metni asla
|noescape ile yazdırmayın, bu bir güvenlik açığına yol açabilir.
substr (int $start, ?int $length=null)
Bir dizenin bir bölümünü çıkarır. Bu filtrenin yerini slice filtresi almıştır.
{$string|substr: 1, 2}
toggle
toggle filtresi, bir niteliğin varlığını bir boole değerine göre denetler. Değer doğru değerliyse
nitelik bulunur; yanlış değerliyse nitelik tamamen atlanır:
<div uk-grid={$isGrid|toggle}>
{* $isGrid doğru değerliyse: <div uk-grid> *}
{* $isGrid yanlış değerliyse: <div> *}
Bu filtre, HTML boole niteliklerine benzer biçimde varlık/yokluk denetimi gerektiren özel nitelikler veya JavaScript kütüphanesi nitelikleri için yararlıdır.
Filtre yalnızca HTML niteliklerinin içinde kullanılabilir.
translate (…$args)
İfadeleri başka dillere çevirir. Filtrenin erişilebilir olması için çevirmeni kurmanız gerekir. Çeviri etiketlerini de kullanabilirsiniz.
<a href="basket">{='Basket'|translate}</a>
<span>{$item|translate}</span>
trim (string
$charlist=" \t\n\r\0\x0B\u{A0}")
Bir dizenin başındaki ve sonundaki boşlukları (veya başka karakterleri) kırpar.
{=' I like Latte. '|trim} {* 'I like Latte.' yazdırır *}
{=' I like Latte.'|trim: '.'} {* ' I like Latte' yazdırır *}
truncate (int $length, string
$append='…')
Bir dizeyi belirtilen en büyük uzunluğa kısaltırken tam sözcükleri korumaya çalışır. Dize kısaltılırsa sonuna üç nokta ekler (ikinci parametreyle değiştirilebilir).
{var $title = 'Hello, how are you?'}
{$title|truncate:5} {* Hell… *}
{$title|truncate:17} {* Hello, how are… *}
{$title|truncate:30} {* Hello, how are you? *}
upper
Bir dizeyi büyük harfe çevirir. PHP mbstring uzantısını gerektirir.
{='latte'|upper} {* 'LATTE' yazdırır *}
Ayrıca bkz. capitalize, firstLower, firstUpper, lower.
webalize
Bir UTF‑8 dizesini URL'lerde kullanılan biçime uyarlar.
ASCII'ye çevirir. Boşlukları kısa çizgiye çevirir. Alfanümerik olmayan, alt çizgi veya kısa çizgi olmayan karakterleri kaldırır. Küçük harfe çevirir. Ayrıca baştaki ve sondaki boşlukları kırpar.
{var $s = 'Our 10th product'}
{$s|webalize} {* 'our-10th-product' yazdırır *}
nette/utils kütüphanesini gerektirir.