Filtre Latte
În șabloane, putem folosi funcții care ajută la modificarea sau reformatarea datelor în forma finală. Le numim filtre.
capitalize |
litere mici, prima literă a cuvintelor mare |
firstUpper |
convertește prima literă în majusculă |
lower |
convertește în litere mici |
upper |
convertește în litere mari |
ceil |
rotunjește numărul în sus la precizia dată |
floor |
rotunjește numărul în jos la precizia dată |
round |
rotunjește numărul la precizia dată |
escapeUrl |
escapează parametrul în URL |
noescape |
afișează variabila fără escapare |
query |
generează query string în URL |
Mai există filtre de escapare pentru HTML (escapeHtml
și escapeHtmlComment
), XML
(escapeXml
), JavaScript (escapeJs
), CSS (escapeCss
) și iCalendar
(escapeICal
), pe care Latte le folosește singur datorită escapării contextuale sensibile și nu trebuie să le
scrieți.
checkUrl |
curăță adresa URL de intrări periculoase |
nocheck |
previne curățarea automată a adresei URL |
Atributele Latte src
și href
verifică
automat, deci filtrul checkUrl
aproape că nu trebuie folosit.
Toate filtrele implicite sunt destinate șirurilor în codificarea UTF-8.
Utilizare
Filtrele se scriu după bara verticală (poate fi precedată de un spațiu):
Filtrele (în versiunile mai vechi, ajutoarele) pot fi înlănțuite și apoi se aplică în ordine de la stânga la dreapta:
Parametrii se specifică după numele filtrului, separați prin două puncte sau virgule:
Filtrele pot fi aplicate și pe o expresie:
Filtrele personalizate pot fi înregistrate în acest mod:
În șablon, se apelează apoi astfel:
Filtre
batch (int $length, mixed $item): array
Filtrul care simplifică afișarea datelor liniare sub formă de tabel. Returnează un array de array-uri cu numărul specificat de elemente. Dacă specificați al doilea parametru, acesta va fi folosit pentru a completa elementele lipsă de pe ultimul rând.
Afișează:
Vezi și group și tag-ul iterateWhile.
breakLines
Adaugă tag-ul HTML <br>
înaintea fiecărui caracter de linie nouă.
bytes (int $precision=2)
Formatează dimensiunea în bytes într-o formă lizibilă pentru om. Dacă sunt setate setările regionale, se vor folosi separatoarele corespunzătoare pentru zecimale și mii.
ceil (int $precision=0)
Rotunjește numărul în sus la precizia dată.
capitalize
Cuvintele vor începe cu majuscule, toate celelalte caractere vor fi minuscule. Necesită extensia PHP
mbstring
.
Vezi și firstUpper, lower, upper.
checkUrl
Forțează curățarea adresei URL. Verifică dacă variabila conține o adresă URL web (adică protocol HTTP/HTTPS) și previne afișarea linkurilor care pot reprezenta un risc de securitate.
Afișează:
Vezi și nocheck.
clamp (int|float $min, int|float $max)
Limitează valoarea la intervalul inclusiv dat min și max.
Există și ca funcție.
dataStream (string $mimetype=detect)
Convertește conținutul în schema data URI. Cu ajutorul acesteia, se pot încorpora imagini în HTML sau CSS fără a fi nevoie de linkuri către fișiere externe.
Să avem într-o variabilă imaginea $img = Image::fromFile('imagine.gif')
, apoi
Afișează, de exemplu:
Necesită extensia PHP fileinfo
.
date (string $format)
Formatează data și ora conform măștii utilizate de funcția PHP date. Filtrul acceptă
data în format UNIX timestamp, ca șir sau obiect de tip DateTimeInterface
.
Vezi și localDate.
escapeUrl
Escapează variabila pentru utilizare ca parametru în URL.
Vezi și query.
explode (string
$separator=''
)
Împarte șirul într-un array după delimitator. Alias pentru split
.
Dacă delimitatorul este un șir gol (valoarea implicită), intrarea va fi împărțită în caractere individuale:
Puteți folosi și aliasul split
:
Vezi și implode.
first
Returnează primul element al array-ului sau caracterul șirului:
floor (int $precision=0)
Rotunjește numărul în jos la precizia dată.
firstUpper
Convertește prima literă în majusculă. Necesită extensia PHP mbstring
.
Vezi și capitalize, lower, upper.
group (string|int|\Closure $by): array
Filtrul grupează datele după diverse criterii.
În acest exemplu, rândurile din tabel sunt grupate după coloana categoryId
. Ieșirea este un array de
array-uri, unde cheia este valoarea din coloana categoryId
. Citiți un tutorial
detaliat.
Vezi și batch, funcția group și tag-ul iterateWhile.
implode (string $glue=''
)
Returnează un șir care este concatenarea elementelor secvenței. Alias pentru join
.
Puteți folosi și aliasul join
:
indent (int $level=1, string
$char="\t"
)
Indentează textul de la stânga cu un număr dat de tabulatori sau alte caractere, pe care le putem specifica în al doilea argument. Rândurile goale nu sunt indentate.
Afișează:
last
Returnează ultimul element al array-ului sau caracterul șirului:
length
Returnează lungimea șirului sau a array-ului.
- pentru șiruri, returnează lungimea în caractere UTF-8
- pentru array-uri, returnează numărul de elemente
- pentru obiecte care implementează interfața Countable, utilizează valoarea returnată de metoda count()
- pentru obiecte care implementează interfața IteratorAggregate, utilizează valoarea returnată de funcția iterator_count()
localDate (?string $format=null, ?string $date=null, ?string $time=null)
Formatează data și ora în funcție de setările regionale, asigurând o afișare
consistentă și localizată a datelor temporale în diferite limbi și regiuni. Filtrul acceptă data ca UNIX timestamp, șir sau
obiect de tip DateTimeInterface
.
Dacă utilizați filtrul fără parametri, data va fi afișată la nivelul long
, vezi mai jos.
a) utilizarea formatului
Parametrul format
descrie ce componente temporale trebuie afișate. Utilizează coduri de litere pentru acestea, a
căror număr de repetări influențează lățimea ieșirii:
an | y / yy / yyyy |
2024 / 24 / 2024 |
lună | M / MM / MMM / MMMM |
8 / 08 / aug. / august |
zi | d / dd / E / EEEE |
1 / 01 / dum. / duminică |
oră | j / H / h |
preferat / 24 ore / 12 ore |
minut | m / mm |
5 / 05 (2 cifre în combinație cu secundele) |
secundă | s / ss |
8 / 08 (2 cifre în combinație cu minutele) |
Ordinea codurilor în format nu contează, deoarece ordinea componentelor va fi afișată conform convențiilor setărilor
regionale. Formatul este, așadar, independent de acestea. De exemplu, formatul yyyyMMMMd
în mediul
en_US
va afișa April 15, 2024
, în timp ce în mediul ro_RO
va afișa
15 august 2024
:
locale: | ro_RO | en_US |
---|---|---|
format: 'dMy' |
10.8.2024 | 8/10/2024 |
format: 'yM' |
8/2024 | 8/2024 |
format: 'yyyyMMMM' |
august 2024 | August 2024 |
format: 'MMMM' |
august | August |
format: 'jm' |
17:22 | 5:22 PM |
format: 'Hm' |
17:22 | 17:22 |
format: 'hm' |
5:22 p.m. | 5:22 PM |
b) utilizarea stilurilor predefinite
Parametrii date
și time
determină cât de detaliat trebuie afișată data și ora. Puteți alege
dintre mai multe niveluri: full
, long
, medium
, short
. Se poate afișa doar
data, doar ora sau ambele:
locale: | ro_RO | en_US |
---|---|---|
date: short |
23.01.1978 | 1/23/78 |
date: medium |
23 ian. 1978 | Jan 23, 1978 |
date: long |
23 ianuarie 1978 | January 23, 1978 |
date: full |
luni, 23 ianuarie 1978 | 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 EET | 8:30:59 AM GMT+2 |
date: short, time: short |
23.01.1978, 08:30 | 1/23/78, 8:30 AM |
date: medium, time: short |
23 ian. 1978, 08:30 | Jan 23, 1978, 8:30 AM |
date: long, time: short |
23 ianuarie 1978, 08:30 | January 23, 1978 at 8:30 AM |
Pentru dată, se poate utiliza în plus prefixul relative-
(de ex. relative-short
), care pentru
datele apropiate de prezent va afișa ieri
, azi
sau mâine
, altfel se va afișa în mod
standard.
Vezi și date.
lower
Convertește șirul în litere mici. Necesită extensia PHP mbstring
.
Vezi și capitalize, firstUpper, upper.
nocheck
Previne curățarea automată a adresei URL. Latte verifică automat dacă variabila conține o adresă URL web (adică protocol HTTP/HTTPS) și previne afișarea linkurilor care pot reprezenta un risc de securitate.
Dacă linkul utilizează o altă schemă, de ex. javascript:
sau data:
, și sunteți sigur de
conținutul său, puteți dezactiva verificarea folosind |nocheck
.
Afișează:
Vezi și checkUrl.
noescape
Dezactivează escaparea automată.
Afișează:
Utilizarea incorectă a filtrului noescape
poate duce la vulnerabilitatea XSS! Nu-l utilizați
niciodată dacă nu sunteți absolut sigur de ceea ce faceți și că șirul afișat provine dintr-o sursă de
încredere.
number (int $decimals=0, string
$decPoint='.'
, string $thousandsSep=','
)
Formatează numărul la un anumit număr de zecimale. Dacă sunt setate setările regionale, se vor folosi separatoarele corespunzătoare pentru zecimale și mii.
number (string $format)
Parametrul format
permite definirea aspectului numerelor exact conform nevoilor dvs. Pentru aceasta, este necesar
să aveți setate setările regionale. Formatul constă din mai multe caractere speciale, a
căror descriere completă o găsiți în documentația DecimalFormat:
0
cifră obligatorie, se afișează întotdeauna, chiar dacă este zero#
cifră opțională, se afișează doar dacă numărul există efectiv în această poziție@
cifră semnificativă, ajută la afișarea numărului cu un anumit număr de cifre valide.
indică unde trebuie să fie virgula zecimală (sau punctul, în funcție de țară),
servește la separarea grupurilor de cifre, cel mai adesea miilor%
numărul se înmulțește cu 100× și se adaugă semnul procentului
Să vedem câteva exemple. În primul exemplu, două zecimale sunt obligatorii, în al doilea sunt opționale. Al treilea exemplu arată completarea cu zerouri la stânga și la dreapta, al patrulea afișează doar cifrele existente:
Cifrele semnificative determină câte cifre, indiferent de virgula zecimală, trebuie afișate, rotunjindu-se:
O modalitate ușoară de a afișa numărul ca procent. Numărul se înmulțește cu 100× și se adaugă semnul
%
:
Putem defini un format diferit pentru numerele pozitive și negative, separate prin caracterul ;
. În acest mod,
de exemplu, se poate seta ca numerele pozitive să fie afișate cu semnul +
:
Rețineți că aspectul real al numerelor poate varia în funcție de setările țării. De exemplu, în unele țări se folosește virgula în loc de punct ca separator zecimal. Acest filtru ia în considerare automat acest lucru și nu trebuie să vă faceți griji.
padLeft (int $length, string
$pad=' '
)
Completează șirul la o anumită lungime cu un alt șir de la stânga.
padRight (int $length, string
$pad=' '
)
Completează șirul la o anumită lungime cu un alt șir de la dreapta.
query
Generează dinamic query string în URL:
Afișează:
Cheile cu valoarea null
sunt omise.
Vezi și escapeUrl.
random
Returnează un element aleatoriu al array-ului sau caracterul șirului:
repeat (int $count)
Repetă șirul de x ori.
replace (string|array $search, string
$replace=''
)
Înlocuiește toate aparițiile șirului de căutare cu șirul de înlocuire.
Se pot efectua și mai multe înlocuiri simultan:
replaceRE (string $pattern, string
$replace=''
)
Efectuează căutarea expresiilor regulate cu înlocuire.
reverse
Inversează șirul sau array-ul dat.
round (int $precision=0)
Rotunjește numărul la precizia dată.
slice (int $start, ?int $length=null, bool $preserveKeys=false)
Extrage o parte a array-ului sau a șirului.
Filtrul funcționează ca funcția PHP array_slice
pentru array-uri sau mb_substr
pentru șiruri, cu
fallback la funcția iconv_substr
în modul UTF-8.
Dacă start este pozitiv, secvența va începe deplasată cu acest număr de la începutul array-ului/șirului. Dacă este negativ, secvența va începe deplasată cu atâtea de la sfârșit.
Dacă parametrul length este specificat și este pozitiv, secvența va conține atâtea elemente. Dacă în această funcție este transmis un parametru length negativ, secvența va conține toate elementele array-ului original, începând de la poziția start și terminând la poziția mai mică cu length elemente de la sfârșitul array-ului. Dacă nu specificați acest parametru, secvența va conține toate elementele array-ului original, începând de la poziția start.
În mod implicit, filtrul schimbă ordinea și resetează cheile întregi ale array-ului. Acest comportament poate fi schimbat setând preserveKeys la true. Cheile șir sunt întotdeauna păstrate, indiferent de acest parametru.
sort (?Closure $comparison, string|int|\Closure|null $by=null, string|int|\Closure|bool $byKey=false)
Filtrul sortează elementele unui array sau iterator și păstrează cheile lor asociative. Când sunt setate setările regionale, sortarea respectă regulile acestora, dacă nu este specificată o funcție de comparare personalizată.
Array sortat în ordine inversă:
Puteți specifica o funcție de comparare personalizată pentru sortare (exemplul arată cum să inversați sortarea de la cel mai mare la cel mai mic):
Filtrul |sort
permite, de asemenea, sortarea elementelor după chei:
Dacă trebuie să sortați un tabel după o anumită coloană, puteți utiliza parametrul by
. Valoarea
'name'
din exemplu specifică faptul că se va sorta după $item->name
sau
$item['name']
, în funcție de dacă $item
este un array sau un obiect:
Puteți defini, de asemenea, o funcție callback care determină valoarea după care se va sorta:
În același mod se poate utiliza și parametrul byKey
.
spaceless
Elimină spațiul alb (spațiile) inutil din ieșire. Puteți folosi și aliasul strip
.
Afișează:
stripHtml
Convertește HTML în text simplu. Adică elimină tag-urile HTML și convertește entitățile HTML în text.
Textul simplu rezultat poate conține în mod natural caractere care reprezintă tag-uri HTML, de exemplu
'<p>'|stripHtml
se convertește în <p>
. În niciun caz nu afișați textul astfel
obținut cu |noescape
, deoarece acest lucru poate duce la o vulnerabilitate de securitate.
substr (int $offset, ?int $length=null)
Extrage o parte a șirului. Acest filtru a fost înlocuit de filtrul slice.
translate (…$args)
Traduce expresiile în alte limbi. Pentru ca filtrul să fie disponibil, trebuie setat traducătorul. Puteți utiliza și tag-urile pentru traducere.
trim (string
$charlist=" \t\n\r\0\x0B\u{A0}"
)
Elimină spațiile albe (sau alte caractere) de la începutul și sfârșitul șirului.
truncate (int $length, string
$append='…'
)
Taie șirul la lungimea maximă specificată, încercând să păstreze cuvintele întregi. Dacă șirul este scurtat, adaugă la sfârșit trei puncte (se poate schimba cu al doilea parametru).
upper
Convertește șirul în litere mari. Necesită extensia PHP mbstring
.
Vezi și capitalize, firstUpper, lower.
webalize
Modifică șirul UTF-8 în forma utilizată în URL.
Se convertește în ASCII. Convertește spațiile în cratime. Elimină caracterele care nu sunt alfanumerice, underscore sau cratime. Convertește în litere mici. Elimină, de asemenea, spațiile de la început și sfârșit.
Necesită biblioteca nette/utils.