Latte Filtreleri
Şablonlarda, verileri nihai biçimine ayarlamaya veya yeniden biçimlendirmeye yardımcı olan fonksiyonları kullanabiliriz. Bunlara filtreler diyoruz.
capitalize |
küçük harf, kelimelerin ilk harfi büyük |
firstUpper |
ilk harfi büyük harfe dönüştürür |
lower |
küçük harfe dönüştürür |
upper |
büyük harfe dönüştürür |
ceil |
sayıyı belirtilen hassasiyete göre yukarı yuvarlar |
floor |
sayıyı belirtilen hassasiyete göre aşağı yuvarlar |
round |
sayıyı belirtilen hassasiyete göre yuvarlar |
escapeUrl |
URL'deki parametreyi kaçış işlemine tabi tutar |
noescape |
değişkeni kaçış işlemi yapmadan yazdırır |
query |
URL'de sorgu dizesi oluşturur |
Ayrıca, Latte'nin bağlama duyarlı kaçış sayesinde kendisinin
kullandığı ve sizin yazmanıza gerek olmayan HTML (escapeHtml
ve escapeHtmlComment
), XML
(escapeXml
), JavaScript (escapeJs
), CSS (escapeCss
) ve iCalendar (escapeICal
)
için kaçış filtreleri de vardır.
checkUrl |
URL adresini tehlikeli girdilerden temizler |
nocheck |
URL adresinin otomatik temizlenmesini önler |
Latte src
ve href
niteliklerini otomatik olarak
kontrol eder, bu nedenle checkUrl
filtresini neredeyse hiç kullanmanız gerekmez.
Tüm varsayılan filtreler UTF-8 kodlamasındaki karakter dizileri için tasarlanmıştır.
Kullanım
Filtreler dikey çubuktan sonra yazılır (önünde bir boşluk olabilir):
Filtreler (eski sürümlerde yardımcılar) zincirlenebilir ve ardından soldan sağa doğru sırayla uygulanır:
Parametreler, filtre adından sonra iki nokta üst üste veya virgülle ayrılarak girilir:
Filtreler bir ifadeye de uygulanabilir:
Özel filtreler şu şekilde kaydedilebilir:
Şablonda daha sonra şu şekilde çağrılır:
Filtreler
batch (int $length, mixed $item): array
Doğrusal verilerin tablo şeklinde listelenmesini kolaylaştıran bir filtre. Belirtilen sayıda öğe içeren bir dizi dizisi döndürür. İkinci bir parametre belirtirseniz, son satırdaki eksik öğeleri tamamlamak için kullanılır.
Yazdırır:
Ayrıca bkz. group ve iterateWhile etiketi.
breakLines
Her yeni satır karakterinden önce HTML <br>
etiketini ekler.
bytes (int $precision=2)
Boyutu bayt cinsinden insan tarafından okunabilir bir biçime dönüştürür. Eğer yerel ayar ayarlanmışsa, ilgili ondalık ve binlik ayırıcılar kullanılır.
ceil (int $precision=0)
Sayıyı belirtilen hassasiyete göre yukarı yuvarlar.
capitalize
Kelimeler büyük harfle başlar, geri kalan tüm karakterler küçük harf olur. mbstring
PHP eklentisini
gerektirir.
Ayrıca bkz. firstUpper, lower, upper.
checkUrl
URL adresinin temizlenmesini 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 yazdırılmasını önler.
Yazdırır:
Ayrıca bkz. nocheck.
clamp (int|float $min, int|float $max)
Değeri verilen kapsayıcı min ve max aralığıyla sınırlar.
Ayrıca fonksiyon olarak da mevcuttur.
dataStream (string $mimetype=detect)
İçeriği data URI scheme'ye dönüştürür. Bu sayede harici dosyalara bağlantı vermeden HTML veya CSS'e resimler eklenebilir.
Değişkende bir resmimiz olsun $img = Image::fromFile('resim.gif')
, o zaman
Örneğin şunu yazdırır:
fileinfo
PHP eklentisini gerektirir.
date (string $format)
Tarih ve saati date PHP fonksiyonu tarafından kullanılan maskeye göre biçimlendirir.
Filtre, tarihi UNIX zaman damgası, karakter dizisi veya DateTimeInterface
türünde bir nesne olarak
kabul eder.
Ayrıca bkz. localDate.
escapeUrl
Değişkeni URL'de parametre olarak kullanılmak üzere kaçış işlemine tabi tutar.
Ayrıca bkz. query.
explode (string
$separator=''
)
Karakter dizisini ayırıcıya göre diziye böler. split
için takma ad.
Ayırıcı boş bir karakter dizisi ise (varsayılan değer), girdi tek tek karakterlere bölünecektir:
Ayrıca split
takma adını da kullanabilirsiniz:
Ayrıca bkz. implode.
first
Dizinin ilk öğesini veya karakter dizisinin ilk karakterini döndürür:
floor (int $precision=0)
Sayıyı belirtilen hassasiyete göre aşağı yuvarlar.
firstUpper
İlk harfi büyük harfe dönüştürür. mbstring
PHP eklentisini gerektirir.
Ayrıca bkz. capitalize, lower, upper.
group (string|int|\Closure $by): array
Filtre, 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.
Ayrıca bkz. batch, group fonksiyonu ve iterateWhile etiketi.
implode (string $glue=''
)
Bir dizinin öğelerinin birleştirilmesiyle oluşan bir karakter dizisi döndürür. join
için takma ad.
Ayrıca join
takma adını da kullanabilirsiniz:
indent (int $level=1, string
$char="\t"
)
Metni soldan belirtilen sayıda sekme veya ikinci argümanda belirtebileceğimiz diğer karakterlerle girintiler. Boş satırlar girintilenmez.
Yazdırır:
last
Dizinin son öğesini veya karakter dizisinin son karakterini döndürür:
length
Bir karakter dizisinin veya dizinin uzunluğunu döndürür.
- karakter dizileri için UTF-8 karakter cinsinden uzunluğu döndürür
- diziler için öğe sayısını döndürür
- Countable arayüzünü uygulayan nesneler için count() metodunun dönüş değerini kullanır
- IteratorAggregate arayüzünü uygulayan nesneler için iterator_count() fonksiyonunun dönüş değerini kullanır
localDate (?string $format=null, ?string $date=null, ?string $time=null)
Tarih ve saati yerel ayara göre biçimlendirir, bu da farklı diller ve bölgeler
arasında zaman verilerinin tutarlı ve yerelleştirilmiş bir şekilde görüntülenmesini sağlar. Filtre, tarihi UNIX zaman
damgası, karakter dizisi veya DateTimeInterface
türünde bir nesne olarak kabul eder.
Filtreyi parametresiz kullanırsanız, tarih long
seviyesinde yazdırılır, bkz. aşağıda.
a) biçim kullanımı
format
parametresi, hangi zaman bileşenlerinin görüntüleneceğini açıklar. Bunun için harf kodları
kullanır ve bunların tekrar sayısı çıktının genişliğini etkiler:
yıl | y / yy / yyyy |
2024 / 24 / 2024 |
ay | M / MM / MMM / MMMM |
8 / 08 / Ağu / Ağustos |
gün | d / dd / E / EEEE |
1 / 01 / Paz / Pazar |
saat | j / H / h |
tercih edilen / 24 saatlik / 12 saatlik |
dakika | m / mm |
5 / 05 (saniyelerle kombinasyonda 2 basamak) |
saniye | s / ss |
8 / 08 (dakikalarla kombinasyonda 2 basamak) |
Biçimdeki kodların sırası önemli değildir, çünkü bileşenlerin sırası yerel ayarın geleneklerine göre
yazdırılır. Bu nedenle biçim ondan bağımsızdır. Örneğin, yyyyMMMMd
biçimi en_US
ortamında
April 15, 2024
yazdırırken, tr_TR
ortamında 15 Nisan 2024
yazdırır:
locale: | tr_TR | en_US |
---|---|---|
format: 'dMy' |
10.08.2024 | 8/10/2024 |
format: 'yM' |
8/2024 | 8/2024 |
format: 'yyyyMMMM' |
Ağustos 2024 | August 2024 |
format: 'MMMM' |
Ağustos | August |
format: 'jm' |
17:22 | 5:22 PM |
format: 'Hm' |
17:22 | 17:22 |
format: 'hm' |
5:22 ös | 5:22 PM |
b) önceden ayarlanmış stillerin kullanımı
date
ve time
parametreleri, tarih ve saatin ne kadar ayrıntılı yazdırılacağını belirler.
Birkaç seviye arasından seçim yapabilirsiniz: full
, long
, medium
, short
.
Yalnızca tarihi, yalnızca saati veya her ikisini de yazdırmayı seçebilirsiniz:
locale: | tr_TR | en_US |
---|---|---|
date: short |
23.01.1978 | 1/23/78 |
date: medium |
23 Oca 1978 | Jan 23, 1978 |
date: long |
23 Ocak 1978 | January 23, 1978 |
date: full |
23 Ocak 1978 Pazartesi | Monday, January 23, 1978 |
time: short |
08:30 | 8:30 AM |
time: medium |
08:30:59 | 8:30:59 AM |
time: long |
08:30:59 GMT+03:00 | 8:30:59 AM GMT+1 |
date: short, time: short |
23.01.1978 08:30 | 1/23/78, 8:30 AM |
date: medium, time: short |
23 Oca 1978 08:30 | Jan 23, 1978, 8:30 AM |
date: long, time: short |
23 Ocak 1978 08:30 | January 23, 1978 at 8:30 AM |
Tarih için ayrıca relative-
önekini kullanabilirsiniz (ör. relative-short
), bu, günümüze
yakın tarihler için dün
, bugün
veya yarın
gösterir, aksi takdirde standart şekilde
yazdırılır.
Ayrıca bkz. date.
lower
Karakter dizisini küçük harfe dönüştürür. mbstring
PHP eklentisini gerektirir.
Ayrıca bkz. capitalize, firstUpper, upper.
nocheck
URL adresinin otomatik temizlenmesini önler. Latte otomatik olarak kontrol eder, değişkenin bir web URL'si (yani HTTP/HTTPS protokolü) içerip içermediğini ve güvenlik riski oluşturabilecek bağlantıların yazdırılmasını önler.
Bağlantı javascript:
veya data:
gibi başka bir şema kullanıyorsa ve içeriğinden eminseniz,
|nocheck
kullanarak kontrolü kapatabilirsiniz.
Yazdırır:
Ayrıca bkz. checkUrl.
noescape
Otomatik kaçış işlemini devre dışı bırakır.
Yazdırır:
noescape
filtresinin yanlış kullanımı XSS güvenlik açığına yol açabilir! Ne
yaptığınızdan ve yazdırılan karakter dizisinin güvenilir bir kaynaktan geldiğinden tamamen emin değilseniz asla
kullanmayın.
number (int $decimals=0, string
$decPoint='.'
, string $thousandsSep=','
)
Sayıyı belirli sayıda ondalık basamağa göre biçimlendirir. Eğer yerel ayar ayarlanmışsa, ilgili ondalık ve binlik ayırıcılar kullanılır.
number (string $format)
format
parametresi, sayıların görünümünü tam olarak ihtiyaçlarınıza göre tanımlamanıza olanak tanır.
Bunun için yerel ayarın ayarlanmış olması gerekir. Biçim, tam açıklaması DecimalFormat belgelerinde bulunan birkaç
özel karakterden oluşur:
0
zorunlu basamak, sıfır olsa bile her zaman görüntülenir#
isteğe bağlı basamak, yalnızca bu konumda gerçekten bir sayı varsa görüntülenir@
anlamlı basamak, sayıyı belirli sayıda geçerli basamakla görüntülemeye yardımcı olur.
ondalık virgülünün (veya ülkeye göre noktanın) nerede olması gerektiğini belirtir,
basamak gruplarını, en sık binlikleri ayırmak için kullanılır%
sayıyı 100 ile çarpar ve yüzde işaretini ekler
Örneklere bakalım. İlk örnekte iki ondalık basamak zorunludur, ikincisinde isteğe bağlıdır. Üçüncü örnek soldan ve sağdan sıfırlarla tamamlamayı gösterir, dördüncü sadece var olan basamakları gösterir:
Anlamlı basamaklar, ondalık virgüle bakılmaksızın kaç basamağın görüntüleneceğini belirler ve yuvarlama yapılır:
Bir sayıyı yüzde olarak göstermenin kolay yolu. Sayı 100 ile çarpılır ve %
işareti eklenir:
Pozitif ve negatif sayılar için farklı bir biçim tanımlayabiliriz, bunlar ;
işaretiyle ayrılır. Bu
şekilde, örneğin pozitif sayıların +
işaretiyle gösterilmesini ayarlayabiliriz:
Unutmayın, sayıların gerçek görünümü ülke ayarlarına göre değişebilir. Örneğin, bazı ülkelerde ondalık ayırıcı olarak nokta yerine virgül kullanılır. Bu filtre bunu otomatik olarak dikkate alır ve sizin hiçbir şey yapmanıza gerek kalmaz.
padLeft (int $length, string
$pad=' '
)
Karakter dizisini soldan başka bir karakter dizisiyle belirli bir uzunluğa tamamlar.
padRight (int $length, string
$pad=' '
)
Karakter dizisini sağdan başka bir karakter dizisiyle belirli bir uzunluğa tamamlar.
query
URL'de dinamik olarak sorgu dizesi oluşturur:
Yazdırır:
null
değerli anahtarlar atlanır.
Ayrıca bkz. escapeUrl.
random
Dizinin rastgele bir öğesini veya karakter dizisinin rastgele bir karakterini döndürür:
repeat (int $count)
Karakter dizisini x kez tekrarlar.
replace (string|array $search, string
$replace=''
)
Arama karakter dizisinin tüm geçtiği yerleri değiştirme karakter dizisiyle değiştirir.
Aynı anda birden fazla değiştirme de yapılabilir:
replaceRE (string $pattern, string
$replace=''
)
Değiştirme ile düzenli ifade araması yapar.
reverse
Verilen karakter dizisini veya diziyi ters çevirir.
round (int $precision=0)
Sayıyı belirtilen hassasiyete göre yuvarlar.
slice (int $start, ?int $length=null, bool $preserveKeys=false)
Bir dizinin veya karakter dizisinin bir bölümünü çıkarı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.
sort (?Closure $comparison, 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. Eğer yerel ayar ayarlanmışsa, özel bir karşılaştırma fonksiyonu belirtilmediği sürece sıralama onun kurallarına göre yapılır.
Sıralanmış dizi ters sırada:
Sıralama için özel bir karşılaştırma fonksiyonu belirleyebilirsiniz (örnek, en büyükten en küçüğe ters sıralamanın nasıl yapılacağını gösterir):
|sort
filtresi ayrıca öğeleri anahtarlara göre sıralamaya da olanak tanır:
Bir tabloyu belirli bir sütuna göre sıralamanız gerekiyorsa, by
parametresini kullanabilirsiniz. Örnekteki
'name'
değeri, $item
'ın dizi mi yoksa nesne mi olduğuna bağlı olarak $item->name
veya $item['name']
'e göre sıralanacağını belirtir:
Ayrıca, neye göre sıralanacağını belirleyen bir geri çağırma fonksiyonu da tanımlayabilirsiniz:
byKey
parametresi de aynı şekilde kullanılabilir.
spaceless
Çıktıdan gereksiz boşlukları (boşluk karakterlerini) kaldırır. Ayrıca strip
takma adını da
kullanabilirsiniz.
Yazdırır:
stripHtml
HTML'i 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.
Sonuçtaki düz metin doğal olarak HTML etiketlerini temsil eden karakterler içerebilir, örneğin
'<p>'|stripHtml
<p>
'ye dönüştürülür. Bu şekilde oluşturulan metni asla
|noescape
ile yazdırmayın, çünkü bu bir güvenlik açığına yol açabilir.
substr (int $offset, ?int $length=null)
Karakter dizisinin bir bölümünü çıkarır. Bu filtre slice filtresiyle değiştirilmiştir.
translate (…$args)
İfadeleri diğer dillere çevirir. Filtrenin kullanılabilir olması için çevirmenin ayarlanması gerekir. Ayrıca çeviri için etiketleri de kullanabilirsiniz.
trim (string
$charlist=" \t\n\r\0\x0B\u{A0}"
)
Karakter dizisinin başından ve sonundan boşluk karakterlerini (veya diğer karakterleri) kaldırır.
truncate (int $length, string
$append='…'
)
Bir karakter dizisini belirtilen maksimum uzunluğa kırpar, bu sırada tam kelimeleri korumaya çalışır. Karakter dizisi kısaltılırsa, sonuna üç nokta ekler (ikinci parametre ile değiştirilebilir).
upper
Karakter dizisini büyük harfe dönüştürür. mbstring
PHP eklentisini gerektirir.
Ayrıca bkz. capitalize, firstUpper, lower.
webalize
UTF-8 karakter dizisini URL'de kullanılan biçime dönüştürür.
ASCII'ye dönüştürülür. Boşlukları tireye dönüştürür. Alfanümerik olmayan, alt çizgi veya tire olmayan karakterleri kaldırır. Küçük harfe dönüştürür. Ayrıca baştaki ve sondaki boşlukları kaldırır.
nette/utils kütüphanesini gerektirir.