Latte Filtreleri
Filtreler, verileri istediğimiz biçimde değiştiren veya biçimlendiren işlevlerdir. Bu, mevcut olan yerleşik filtrelerin bir özetidir.
capitalize |
küçük harf, her kelimenin ilk harfi büyük harf |
firstUpper |
ilk harfi büyük yapar |
lower |
bir dizeyi küçük harf yapar |
upper |
bir dizeyi büyük harf yapar |
ceil |
bir sayıyı belirli bir hassasiyete kadar yuvarlar |
floor |
bir sayıyı belirli bir hassasiyete yuvarlar |
round |
bir sayıyı belirli bir hassasiyete yuvarlar |
escapeUrl |
URL'deki parametreyi kaçar |
noescape |
bir değişkeni kaçış yapmadan yazdırır |
query |
URL'de bir sorgu dizesi oluşturur |
Ayrıca HTML (escapeHtml
ve escapeHtmlComment
), XML (escapeXml
), JavaScript
(escapeJs
), CSS (escapeCss
) ve iCalendar (escapeICal
) için Latte'nin bağlama duyarlı kaç ış sayesinde kendi
kullandığı kaçış filtreleri vardır ve bunları yazmanıza gerek yoktur.
checkUrl |
href niteliği içinde kullanılmak üzere dizeyi sterilize eder |
nocheck |
otomatik URL sanitizasyonunu engeller |
Latte src
ve href
özniteliklerini otomatik olarak kontrol eder, böylece checkUrl
filtresini kullanmanıza neredeyse gerek kalmaz.
Tüm yerleşik filtreler UTF-8 kodlu dizelerle çalışır.
Kullanım
Latte, boru işareti gösterimini kullanarak filtreleri çağırmaya izin verir (önceki boşluğa izin verilir):
<h1>{$heading|upper}</h1>
Filtreler zincirleme olabilir, bu durumda soldan sağa doğru sırayla uygulanırlar:
<h1>{$heading|lower|capitalize}</h1>
Parametreler filtre adından sonra iki nokta üst üste veya virgülle ayrılmış olarak konur:
<h1>{$heading|truncate:20,''}</h1>
İfade üzerinde filtreler uygulanabilir:
{var $name = ($title|upper) . ($subtitle|lower)}</h1>
Özel filtreler bu şekilde kaydedilebilir:
$latte = new Latte\Engine;
$latte->addFilter('shortify', fn(string $s, int $len = 10) => mb_substr($s, 0, $len));
Bunun gibi bir şablonda kullanırız:
<p>{$text|shortify}</p>
<p>{$text|shortify:100}</p>
Filtreler
batch (int length, mixed item): array
Doğrusal verilerin bir tablo biçiminde listelenmesini basitleştiren filtre. Verilen sayıda öğe içeren bir dizi döndürür. İkinci bir parametre sağlarsanız, bu 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>
Baskılar:
<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>
breakLines
Tüm yeni satırlardan önce HTML satır sonlarını ekler.
{var $s = "Text & with \n newline"}
{$s|breakLines} {* çıkışlar "Text & with <br>\n newline" *}
bytes (int precision = 2)
Bayt cinsinden bir boyutu insan tarafından okunabilir biçimde biçimlendirir.
{$size|bytes} 0 B, 1.25 GB, …
{$size|bytes:0} 10 B, 1 GB, …
ceil (int precision = 0)
Bir sayıyı belirli bir hassasiyete kadar yuvarlar.
{=3.4|ceil} {* çıkışlar 4 *}
{=135.22|ceil:1} {* çıktılar 135.3 *}
{=135.22|ceil:3} {* çıktılar 135.22 *}
capitalize
Değerin baş harfli bir sürümünü döndürür. Kelimeler büyük harflerle başlar, geri kalan tüm karakterler
küçüktür. PHP eklentisi gerektirir mbstring
.
{='i like LATTE'|capitalize} {* çıktılar 'I Like Latte' *}
Ayrıca bkz. firstUpper, lower, upper.
checkUrl
URL sanitizasyonunu zorlar. Değişkenin bir web URL'si (yani HTTP/HTTPS protokolü) içerip içermediğini kontrol eder ve güvenlik riski oluşturabilecek bağlantıların yazılmasını engeller.
{var $link = 'javascript:window.close()'}
<a data-href="{$link|checkUrl}">checked</a>
<a data-href="{$link}">unchecked</a>
Baskılar:
<a data-href="">checked</a>
<a data-href="javascript:window.close()">unchecked</a>
Ayrıca bkz. nocheck.
clamp (int|float min, int|float max)
Min ve maks. dahil aralığına sıkıştırılmış değeri döndürür.
{$level|clamp: 0, 255}
Fonksiyon olarak da mevcuttur.
dataStream (string mimetype = detect)
İçeriği veri URI şemasına dönüştürür. Harici dosyalara bağlantı vermeye gerek kalmadan HTML veya CSS'ye görüntü eklemek için kullanılabilir.
$img = Image::fromFile('obrazek.gif')
değişkeninde bir görüntüye sahip olalım, sonra
<img src="{$img|dataStream}">
Örneğin baskılar:
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUA
AAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO
9TXL0Y4OHwAAAABJRU5ErkJggg==">
PHP uzantısı gerektirir fileinfo
.
date (string format)
strftime veya date PHP işlevlerinin seçeneklerini
kullanarak verilen biçimde bir tarih döndürür. Süzgeç bir tarihi UNIX zaman damgası, bir dizge veya DateTime
türünde bir nesne olarak alır.
{$today|date:'%d.%m.%Y'}
{$today|date:'j. n. Y'}
escapeUrl
URL'de parametre olarak kullanılacak bir değişkeni atar.
<a href="http://example.com/{$name|escapeUrl}">{$name}</a>
Ayrıca sorguya bakın.
explode (string separator =
''
)
Bir dizeyi verilen sınırlayıcıya göre böler ve bir dizeler dizisi döndürür. İçin takma ad split
.
{='one,two,three'|explode:','} {* returns ['one', 'two', 'three'] *}
Sınırlayıcı boş bir dizeyse (varsayılan değer), girdi ayrı karakterlere bölünecektir:
{='123'|explode} {* returns ['1', '2', '3'] *}
Ayrıca split
takma adını da kullanabilirsiniz:
{='1,2,3'|split:','} {* returns ['1', '2', '3'] *}
Ayrıca bkz. implode.
first
Dizinin ilk elemanını veya karakter dizisini döndürür:
{=[1, 2, 3, 4]|first} {* çıktılar 1 *}
{='abcd'|first} {* çıktılar 'a' *}
floor (int precision = 0)
Bir sayıyı belirli bir hassasiyete yuvarlar.
{=3.5|floor} {* çıkışlar 3 *}
{=135.79|floor:1} {* çıkışlar 135.7 *}
{=135.79|floor:3} {* çıkışlar 135.79 *}
firstUpper
Değerin ilk harfini büyük harfe dönüştürür. PHP eklentisi gerektirir mbstring
.
{='the latte'|firstUpper} {* çıktılar 'The latte' *}
Ayrıca bkz. büyük harf, alt, üst.
implode (string glue = ''
)
Dizideki dizelerin birleştirilmesinden oluşan bir dizge döndürür. İçin takma ad join
.
{=[1, 2, 3]|implode} {* outputs '123' *}
{=[1, 2, 3]|implode:'|'} {* outputs '1|2|3' *}
Ayrıca join
takma adını da kullanabilirsiniz:
{=[1, 2, 3]|join} {* outputs '123' *}
indent (int level = 1, string char =
"\t"
)
Bir metni soldan belirli sayıda sekme veya ikinci isteğe bağlı bağımsız değişkende belirttiğimiz diğer karakterler kadar girintiler. Boş satırlar girintilenmez.
<div>
{block |indent}
<p>Hello</p>
{/block}
</div>
Baskılar:
<div>
<p>Hello</p>
</div>
last
Dizinin son elemanını veya karakter dizisini döndürür:
{=[1, 2, 3, 4]|last} {* outputs 4 *}
{='abcd'|last} {* outputs 'd' *}
length
Bir dize veya dizinin uzunluğunu döndürür.
- dizeler için, uzunluğu UTF-8 karakterleri cinsinden döndürecektir
- diziler için, öğe sayısını döndürür
- Countable arayüzünü uygulayan nesneler için count() işlevinin dönüş değerini kullanacaktır.
- IteratorAggregate arayüzünü uygulayan nesneler için, iterator_count() işlevinin dönüş değerini kullanacaktır.
{if ($users|length) > 10}
...
{/if}
lower
Bir değeri küçük harfe dönüştürür. PHP eklentisi gerektirir mbstring
.
{='LATTE'|lower} {* outputs 'latte' *}
Ayrıca bkz. capitalize, firstUpper, upper.
nocheck
Otomatik URL sanitizasyonunu önler. Latte, değişkenin bir web URL'si (yani HTTP/HTTPS protokolü) içerip içermediğini otomatik olarak kontrol eder ve güvenlik riski oluşturabilecek bağlantıların yazılmasını önler.
Bağlantı javascript:
veya data:
gibi farklı bir şema kullanıyorsa ve içeriğinden eminseniz,
kontrolü |nocheck
üzerinden devre dışı bırakabilirsiniz.
{var $link = 'javascript:window.close()'}
<a href="{$link}">checked</a>
<a href="{$link|nocheck}">unchecked</a>
Baskılar:
<a href="">checked</a>
<a href="javascript:window.close()">unchecked</a>
Ayrıca bkz. checkUrl.
noescape
Otomatik kaçışı devre dışı bırakır.
{var $trustedHtmlString = '<b>hello</b>'}
Escaped: {$trustedHtmlString}
Unescaped: {$trustedHtmlString|noescape}
Baskılar:
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 değilseniz asla
kullanmayın.
number (int decimals = 0, string decPoint =
'.'
, string thousandsSep = ','
)
Bir sayıyı verilen ondalık basamak sayısına göre biçimlendirir. Ayrıca ondalık nokta ve binlik ayırıcının bir karakterini de belirtebilirsiniz.
{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
padLeft (int length, string pad =
' '
)
Bir dizeyi soldan başka bir dizeyle belirli bir uzunluğa kadar doldurur.
{='hello'|padLeft: 10, '123'} {* outputs '12312hello' *}
padRight (int length, string pad =
' '
)
Bir dizeyi sağdan başka bir dizeyle belirli bir uzunlukta doldurur.
{='hello'|padRight: 10, '123'} {* outputs 'hello12312' *}
query
URL'de dinamik olarak bir sorgu dizesi oluşturur:
<a href="http://example.com/?{[name: 'John Doe', age: 43]|query}">click</a>
<a href="http://example.com/?search={$search|query}">search</a>
Baskılar:
<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
Dizinin rastgele elemanını veya karakter dizisini döndürür:
{=[1, 2, 3, 4]|random} {* example output: 3 *}
{='abcd'|random} {* example output: 'b' *}
repeat (int count)
Dizeyi x kez tekrarlar.
{='hello'|repeat: 3} {* outputs 'hellohellohello' *}
replace (string|array search, string replace =
''
)
Arama dizesinin tüm geçtiği yerleri değiştirme dizesiyle değiştirir.
{='hello world'|replace: 'world', 'friend'} {* outputs 'hello friend' *}
Aynı anda birden fazla değiştirme yapılabilir:
{='hello world'|replace: [h => l, l => h]} {* outputs 'lehho worhd' *}
replaceRE (string pattern, string replace =
''
)
Tüm oluşumları düzenli ifadeye göre değiştirir.
{='hello world'|replaceRE: '/l.*/', 'l'} {* outputs 'hel' *}
reverse
Verilen dizeyi veya diziyi tersine çevirir.
{var $s = 'Nette'}
{$s|reverse} {* outputs 'etteN' *}
{var $a = ['N', 'e', 't', 't', 'e']}
{$a|reverse} {* returns ['e', 't', 't', 'e', 'N'] *}
round (int precision = 0)
Bir sayıyı belirli bir hassasiyete yuvarlar.
{=3.4|round} {* outputs 3 *}
{=3.5|round} {* outputs 4 *}
{=135.79|round:1} {* outputs 135.8 *}
{=135.79|round:3} {* outputs 135.79 *}
slice (int start, int length = null, bool preserveKeys = false)
Bir dizinin veya dizginin bir dilimini çıkarır.
{='hello'|slice: 1, 2} {* outputs 'el' *}
{=['a', 'b', 'c']|slice: 1, 2} {* outputs ['b', 'c'] *}
Dilim süzgeci, diziler için array_slice
PHP işlevi ve dizeler için mb_substr
işlevi olarak
çalışır ve UTF-8 kipinde iconv_substr
işlevine geri döner.
Başlangıç negatif değilse, dizi değişkendeki o başlangıçtan başlayacaktır. Başlangıç negatifse, dizi değişkenin sonundan o kadar uzakta başlayacaktır.
Uzunluk verilmişse ve pozitifse, dizinin içinde o kadar eleman olacaktır. Değişken uzunluktan daha kısaysa, yalnızca mevcut değişken öğeleri mevcut olacaktır. Uzunluk verilirse ve negatifse, dizi değişkenin sonundan itibaren o kadar elemanla duracaktır. Atlanırsa, dizi ofsetten değişkenin sonuna kadar her şeye sahip olacaktır.
Filtre, varsayılan olarak tamsayı dizi anahtarlarını yeniden sıralar ve sıfırlar. Bu davranış preserveKeys öğesi true olarak ayarlanarak değiştirilebilir. Dize anahtarları bu parametreden bağımsız olarak her zaman korunur.
sort
Bir diziyi sıralayan ve dizin ilişkisini koruyan süzgeç.
{foreach ($names|sort) as $name}
...
{/foreach}
Dizi ters sırada sıralanır.
{foreach ($names|sort|reverse) as $name}
...
{/foreach}
Kendi karşılaştırma fonksiyonunuzu parametre olarak aktarabilirsiniz:
{var $sorted = ($names|sort: fn($a, $b) => $b <=> $a)}
spaceless
Gereksiz boşlukları çıktıdan kaldırır. Ayrıca strip
takma adını da kullanabilirsiniz.
{block |spaceless}
<ul>
<li>Hello</li>
</ul>
{/block}
Baskılar:
<ul> <li>Hello</li> </ul>
stripHtml
HTML'yi düz metne dönüştürür. Yani, HTML etiketlerini kaldırır ve HTML varlıklarını metne dönüştürür.
{='<p>one < two</p>'|stripHtml} {* outputs 'one < two' *}
Ortaya çıkan düz metin doğal olarak HTML etiketlerini temsil eden karakterler içerebilir, örneğin
'<p>'|stripHtml
şu şekilde dönüştürülür <p>
. Bir güvenlik açığına yol
açabileceğinden, ortaya çıkan metni asla |noescape
ile çıktı olarak vermeyin.
substr (int offset, int length = null)
Bir dizenin bir dilimini çıkarır. Bu filtre bir dilim filtresi ile değiştirilmiştir.
{$string|substr: 1, 2}
translate (string message, …args)
İfadeleri diğer dillere çevirir. Filtreyi kullanılabilir hale getirmek için çevirmen kurmanız gerekir. Çeviri için etiketleri de kullanabilirsiniz.
<a href="basket">{='Baskter'|translate}</a>
<span>{$item|translate}</span>
trim (string charlist =
" \t\n\r\0\x0B\u{A0}"
)
Baştaki ve sondaki karakterleri, varsayılan olarak boşlukları soyun.
{=' I like Latte. '|trim} {* outputs 'I like Latte.' *}
{=' I like Latte.'|trim: '.'} {* outputs ' I like Latte' *}
truncate (int length, string append =
'…'
)
Bir dizeyi verilen maksimum uzunluğa kısaltır, ancak tüm kelimeleri korumaya çalışır. Dize kesilmişse sonuna üç nokta ekler (bu ikinci parametre ile 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 değeri büyük harfe dönüştürür. PHP eklentisi gerektirir mbstring
.
{='latte'|upper} {* outputs 'LATTE' *}
Ayrıca bkz. capitalize, firstUpper, lower.
webalize
ASCII'ye dönüştürür.
Boşlukları tire işaretine dönüştürür. Alfanümerik, alt çizgi veya kısa çizgi olmayan karakterleri kaldırır. Küçük harfe dönüştürür. Ayrıca baştaki ve sondaki boşlukları da siler.
{var $s = 'Our 10. product'}
{$s|webalize} {* outputs 'our-10-product' *}
nette/utils paketini gerektirir.