Latte Filtreleri

Filtreler, verileri istediğimiz biçimde değiştiren veya biçimlendiren işlevlerdir. Bu, mevcut olan yerleşik filtrelerin bir özetidir.

Dize / dizi dönüşümü
batch doğrusal verilerin bir tabloda listelenmesi
breakLines Tüm yeni satırlardan önce HTML satır sonlarını ekler
bytes bayt cinsinden biçim boyutu
clamp değeri aralığa sıkıştırır
dataStream Veri URI protokol dönüşümü
date tarihi biçimlendirir
explode bir dizeyi verilen sınırlayıcıya göre böler
first dizinin ilk elemanını veya karakter dizisini döndürür
implode bir diziyi bir dizeye birleştirir
indent metni soldan sekme sayısı kadar girintiler
join bir diziyi bir dizeye birleştirir
last dizinin son elemanını veya karakter dizisini döndürür
length bir dize veya dizinin uzunluğunu döndürür
number format numarası
padLeft dizeyi soldan verilen uzunluğa tamamlar
padRight dizeyi sağdan verilen uzunluğa tamamlar
random dizinin rastgele elemanını veya karakter dizisini döndürür
repeat dizeyi tekrarlar
replace arama dizesinin tüm geçtiği yerleri değiştirme ile değiştirir
replaceRE düzenli ifadeye göre tüm oluşumları değiştirir
reverse bir UTF-8 dizesini veya dizisini tersine çevirir
slice bir dizi veya dizenin bir dilimini çıkarır
sort bir diziyi sıralar
spaceless boşluksuz etikete benzer şekilde boşlukları kaldırır
split bir dizeyi verilen sınırlayıcıya göre böler
strip boşlukları kaldırır
stripHtml HTML etiketlerini kaldırır ve HTML varlıklarını metne dönüştürür
substr dizenin bir kısmını döndürür
trim dizeden boşlukları çıkarır
translate diğer dillere çeviri
truncate tüm kelimeleri koruyarak uzunluğu kısaltır
webalize UTF-8 dizesini URL'de kullanılan şekle göre ayarlar
Harf muhafazası
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
Sayıları yuvarlama
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
Kaçış
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.

Güvenlik
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 &amp; 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 *}

Ayrıca bkz. zemin, yuvarlak.

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' *}

Ayrıca bkz. son, rastgele.

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 *}

Ayrıca bkz. tavan, yuvarlak.

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' *}

Ayrıca bkz. ilk, rastgele.

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: &lt;b&gt;hello&lt;/b&gt;
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&amp;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' *}

Ayrıca bkz. ilk, son.

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 *}

Ayrıca bkz. tavan, zemin.

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 &lt; two</p>'|stripHtml}  {* outputs 'one < two' *}

Ortaya çıkan düz metin doğal olarak HTML etiketlerini temsil eden karakterler içerebilir, örneğin '&lt;p&gt;'|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.

versiyon: 3.0