Filtre Latte
Filtrele sunt funcții care modifică sau formatează datele în forma dorită. Acesta este un rezumat al filtrelor încorporate care sunt disponibile.
capitalize |
litere minuscule, prima literă a fiecărui cuvânt majusculă |
firstUpper |
face ca prima literă să fie majusculă |
lower |
face ca un șir de caractere să fie minuscul |
upper |
face un șir de caractere majuscule |
ceil |
rotunjește un număr până la o precizie dată |
floor |
rotunjește un număr la o precizie dată, în jos |
round |
rotunjește un număr la o precizie dată |
escapeUrl |
evită parametrii în URL |
noescape |
tipărește o variabilă fără scăpare |
query |
generează un șir de interogare în URL |
Există, de asemenea, filtre de scăpare
pentru HTML (escapeHtml
și escapeHtmlComment
), XML (escapeXml
), JavaScript
(escapeJs
), CSS (escapeCss
) și iCalendar (escapeICal
), pe care Latte le utilizează singur
datorită scăpării în funcție de context și
pe care nu este nevoie să le scrieți.
checkUrl |
dezinfectează șirul de caractere pentru utilizarea în interiorul atributului href |
nocheck |
previne dezinfectarea automată a URL-urilor |
Latte verifică automat atributele src
și
href
, astfel încât aproape că nu este nevoie să utilizați filtrul checkUrl
.
Toate filtrele încorporate funcționează cu șiruri de caractere codificate UTF-8.
Utilizare
Latte permite apelarea filtrelor folosind notația “pipe” (este permisă folosirea unui spațiu înainte):
<h1>{$heading|upper}</h1>
Filtrele pot fi înlănțuite, caz în care se aplică în ordine de la stânga la dreapta:
<h1>{$heading|lower|capitalize}</h1>
Parametrii se pun după numele filtrului, separați prin două puncte sau virgulă:
<h1>{$heading|truncate:20,''}</h1>
Filtrele pot fi aplicate pe expresie:
{var $name = ($title|upper) . ($subtitle|lower)}</h1>
Filtrele personalizate pot fi înregistrate în acest mod:
$latte = new Latte\Engine;
$latte->addFilter('shortify', fn(string $s, int $len = 10) => mb_substr($s, 0, $len));
Îl folosim într-un șablon ca acesta:
<p>{$text|shortify}</p>
<p>{$text|shortify:100}</p>
Filtre
batch (int length, mixed item): array
Filtru care simplifică listarea datelor liniare sub formă de tabel. Acesta returnează o matrice de tablouri cu numărul dat de elemente. Dacă furnizați un al doilea parametru, acesta este utilizat pentru a completa elementele lipsă de pe ultimul rând.
{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>
Se tipărește:
<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
Inserează întreruperi de linie HTML înainte de toate liniile noi.
{var $s = "Text & with \n newline"}
{$s|breakLines} {* outputs "Text & with <br>\n newline" *}
bytes (int precision = 2)
Formatează o dimensiune în bytes în formă lizibilă pentru oameni.
{$size|bytes} 0 B, 1.25 GB, …
{$size|bytes:0} 10 B, 1 GB, …
ceil (int precision = 0)
Rotunjește un număr până la o precizie dată.
{=3.4|ceil} {* ieșiri 4 *}
{=135.22|ceil:1} {* ieșiri 135.3 *}
{=135.22|ceil:3} {* ieșiri 135.22 *}
A se vedea, de asemenea, floor, round.
capitalize
Returnează o versiune a valorii cu titlu. Cuvintele vor începe cu litere majuscule, toate caracterele rămase sunt
minuscule. Necesită extensia PHP mbstring
.
{='i like LATTE'|capitalize} {* outputs 'I Like Latte' *}
A se vedea, de asemenea, firstUpper, lower, upper.
checkUrl
Aplică igienizarea URL-urilor. Verifică dacă variabila conține un URL web (adică protocolul HTTP/HTTPS) și previne scrierea de linkuri care pot reprezenta un risc de securitate.
{var $link = 'javascript:window.close()'}
<a data-href="{$link|checkUrl}">checked</a>
<a data-href="{$link}">unchecked</a>
Imprimă:
<a data-href="">checked</a>
<a data-href="javascript:window.close()">unchecked</a>
A se vedea și nocheck.
clamp (int|float min, int|float max)
Returnează valoarea fixată în intervalul inclusiv dintre min și max.
{$level|clamp: 0, 255}
Există, de asemenea, ca funcție.
dataStream (string mimetype = detect)
Convertește conținutul în schema URI de date. Poate fi utilizat pentru a insera imagini în HTML sau CSS fără a fi nevoie să se facă legătura cu fișiere externe.
Să avem o imagine într-o variabilă $img = Image::fromFile('obrazek.gif')
, atunci
<img src="{$img|dataStream}">
Se imprimă de exemplu:
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUA
AAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO
9TXL0Y4OHwAAAABJRU5ErkJggg==">
Necesită extensia PHP fileinfo
.
date (string format)
Returnează o dată în formatul dat folosind opțiunile funcțiilor PHP strftime sau
date. Filtrul obține o dată sub forma unui timestamp UNIX, a unui șir de caractere sau a
unui obiect de tip DateTime
.
{$today|date:'%d.%m.%Y'}
{$today|date:'j. n. Y'}
escapeUrl
Scapă o variabilă pentru a fi utilizată ca parametru în URL.
<a href="http://example.com/{$name|escapeUrl}">{$name}</a>
A se vedea, de asemenea, query.
explode (string separator =
''
)
Împarte un șir de caractere după delimitatorul dat și returnează un tablou de șiruri de caractere. Alias pentru
split
.
{='one,two,three'|explode:','} {* returns ['one', 'two', 'three'] *}
Dacă delimitatorul este un șir de caractere gol (valoare implicită), datele de intrare vor fi împărțite în caractere individuale:
{='123'|explode} {* returnează ['1', '2', '3'] *}
Puteți utiliza și aliasul split
:
{='1,2,3'|split:','} {* returnează ['1', '2', '3'] *}
A se vedea și implode.
first
Returnează primul element al unui array sau caracterul unui șir de caractere:
{=[1, 2, 3, 4]|first} {* ieșiri 1 *}
{='abcd'|first} {* iese "a" *}
A se vedea, de asemenea, last, random.
floor (int precision = 0)
Rotunjește un număr până la o precizie dată.
{=3.5|floor} {* ieșiri 3 *}
{=135.79|floor:1} {* ieșiri 135.7 *}
{=135.79|floor:3} {* ieșiri 135.79 *}
A se vedea și plafon, rotunjire.
firstUpper
Convertește prima literă a unei valori în majusculă. Necesită extensia PHP mbstring
.
{='the latte'|firstUpper} {* outputs 'The latte' *}
A se vedea, de asemenea, capitalize, lower, upper.
implode (string glue = ''
)
Returnează un șir de caractere care este concatenarea șirurilor din matrice. Alias pentru join
.
{=[1, 2, 3]|implode} {* iese "123" *}
{=[1, 2, 3]|implode:'|'} {* iese '1|2|3' *}
Puteți utiliza și un alias join
:
{=[1, 2, 3]|join} {* acest "123" *}
indent (int level = 1, string char =
"\t"
)
Indentează un text de la stânga cu un anumit număr de tabulauri sau alte caractere pe care îl specificăm în al doilea argument opțional. Liniile goale nu sunt indentate.
<div>
{block |indent}
<p>Hello</p>
{/block}
</div>
Imprimă:
<div>
<p>Hello</p>
</div>
last
Returnează ultimul element al unui array sau caracterul unui șir de caractere:
{=[1, 2, 3, 4]|last} {* ieșiri 4 *}
{='abcd'|last} {* ieșiri 'd' *}
A se vedea, de asemenea, first, random.
length
Returnează lungimea unui șir de caractere sau a unei matrice.
- pentru șiruri de caractere, va returna lungimea în caractere UTF-8
- pentru array-uri, va returna numărul de elemente.
- pentru obiectele care implementează interfața Countable, se va utiliza valoarea returnată de count().
- pentru obiectele care implementează interfața IteratorAggregate, se va utiliza valoarea returnată de iterator_count().
{if ($users|length) > 10}
...
{/if}
lower
Convertește o valoare în minuscule. Necesită extensia PHP mbstring
.
{='LATTE'|lower} {* acest "latte" *}
A se vedea, de asemenea, capitalize, firstUpper, upper.
nocheck
Împiedică dezinfectarea automată a URL-urilor. Latte verifică automat dacă variabila conține un URL web (adică protocolul HTTP/HTTPS) și împiedică scrierea de link-uri care pot reprezenta un risc de securitate.
Dacă link-ul utilizează o schemă diferită, cum ar fi javascript:
sau data:
, și sunteți sigur
de conținutul acestuia, puteți dezactiva verificarea prin intermediul |nocheck
.
{var $link = 'javascript:window.close()'}
<a href="{$link}">checked</a>
<a href="{$link|nocheck}">unchecked</a>
Tipărituri:
<a href="">checked</a>
<a href="javascript:window.close()">unchecked</a>
A se vedea, de asemenea, checkUrl.
noescape
Dezactive scăparea automată.
{var $trustedHtmlString = '<b>hello</b>'}
Escaped: {$trustedHtmlString}
Unescaped: {$trustedHtmlString|noescape}
Imprimă:
Escaped: <b>hello</b>
Unescaped: <b>hello</b>
Folosirea abuzivă a filtrului noescape
poate duce la o vulnerabilitate XSS! Nu îl utilizați
niciodată decât dacă sunteți absolut sigur de ceea ce faceți și dacă șirul pe care îl imprimați provine
dintr-o sursă de încredere.
number (int decimals = 0, string decPoint =
'.'
, string thousandsSep = ','
)
Formatează un număr cu un anumit număr de zecimale. De asemenea, puteți specifica un caracter al punctului zecimal și al separatorului de mii.
{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 =
' '
)
Pads un șir de caractere la o anumită lungime cu un alt șir de caractere din stânga.
{='hello'|padLeft: 10, '123'} {* ieșiri '12312hello' *}
padRight (int length, string pad =
' '
)
Adaugă un șir de caractere la o anumită lungime cu un alt șir din dreapta.
{='hello'|padRight: 10, '123'} {* ieșiri 'hello12312' *}
query
Generează dinamic un șir de interogare în URL:
<a href="http://example.com/?{[name: 'John Doe', age: 43]|query}">click</a>
<a href="http://example.com/?search={$search|query}">search</a>
Imprimă:
<a href="http://example.com/?name=John+Doe&age=43">click</a>
<a href="http://example.com/?search=Foo+Bar">search</a>
Cheile cu o valoare de null
sunt omise.
A se vedea, de asemenea, escapeUrl.
random
Returnează un element aleatoriu din matrice sau un caracter aleatoriu dintr-un șir de caractere:
{=[1, 2, 3, 4]|random} {* exemplu de ieșire: 3 *}
{='abcd'|random} {* exemplu de ieșire: 'b' *}
A se vedea, de asemenea, first, last.
repeat (int count)
Repetă șirul de x ori.
{='hello'|repeat: 3} {* outputs 'hellohellohello' *}
replace (string|array search, string replace =
''
)
Înlocuiește toate aparițiile șirului de căutare cu șirul de înlocuire.
{='hello world'|replace: 'world', 'friend'} {* iese 'hello friend' *}
Se pot face mai multe înlocuiri deodată:
{='hello world'|replace: [h => l, l => h]} {* outputs 'lehho worhd' *}
replaceRE (string pattern, string replace =
''
)
Înlocuiește toate ocurențele în funcție de expresia regulată.
{='hello world'|replaceRE: '/l.*/', 'l'} {* outputs 'hel' *}
reverse
Inversează șirul sau matricea dată.
{var $s = 'Nette'}
{$s|reverse} {* iese "etteN" *}
{var $a = ['N', 'e', 't', 't', 'e']}
{$a|reverse} {* returnează ['e', 't', 't', 'e', 'N'] *}
round (int precision = 0)
Rotunjește un număr la o precizie dată.
{=3.4|round} {* ieșiri 3 *}
{=3.5|round} {* ieșiri 4 *}
{=135.79|round:1} {* ieșiri 135.8 *}
{=135.79|round:3} {* ieșiri 135.79 *}
A se vedea, de asemenea, plafon, podea.
slice (int start, int length = null, bool preserveKeys = false)
Extrage o porțiune dintr-un tablou sau un șir de caractere.
{='hello'|slice: 1, 2} {* ieșiri 'el' *}
{=['a', 'b', 'c']|slice: 1, 2} {* ieșiri ['b', 'c'] *}
Filtrul slice funcționează ca funcția PHP array_slice
pentru array-uri și mb_substr
pentru
șiruri de caractere, cu o revenire la iconv_substr
în modul UTF-8.
În cazul în care startul nu este negativ, secvența va începe de la acel start în variabilă. Dacă start este negativ, secvența va începe la acea distanță de la sfârșitul variabilei.
În cazul în care lungimea este dată și este pozitivă, atunci secvența va avea până la numărul de elemente din ea. În cazul în care variabila este mai scurtă decât lungimea, atunci vor fi prezente numai elementele disponibile ale variabilei. În cazul în care lungimea este dată și este negativă, secvența se va opri la atâtea elemente de la sfârșitul variabilei. În cazul în care este omisă, secvența va conține toate elementele de la offset până la sfârșitul variabilei.
Filter reordonează și resetează implicit cheile tabloului de numere întregi. Acest comportament poate fi modificat prin setarea preserveKeys la true. Cheile șirurilor de caractere sunt întotdeauna păstrate, indiferent de acest parametru.
sort
Filtru care sortează o matrice și menține asocierea indicilor.
{foreach ($names|sort) as $name}
...
{/foreach}
Array sortat în ordine inversă.
{foreach ($names|sort|reverse) as $name}
...
{/foreach}
Puteți trece propria funcție de comparație ca parametru:
{var $sorted = ($names|sort: fn($a, $b) => $b <=> $a)}
spaceless
Îndepărtează spațiile albe inutile din rezultat. De asemenea, puteți utiliza aliasul strip
.
{block |spaceless}
<ul>
<li>Hello</li>
</ul>
{/block}
Imprimă:
<ul> <li>Hello</li> </ul>
stripHtml
Convertește HTML în text simplu. Adică, elimină etichetele HTML și convertește entitățile HTML în text.
{='<p>one < two</p>'|stripHtml} {* outputs 'one < two' *}
Textul simplu rezultat poate conține, în mod natural, caractere care reprezintă etichete HTML, de exemplu
'<p>'|stripHtml
este convertit în <p>
. Nu scoateți niciodată textul rezultat cu
|noescape
, deoarece acest lucru poate duce la o vulnerabilitate de securitate.
substr (int offset, int length = null)
Extrage o porțiune dintr-un șir de caractere. Acest filtru a fost înlocuit cu un filtru de felie.
{$string|substr: 1, 2}
translate (string message, …args)
Traduce expresii în alte limbi. Pentru ca filtrul să fie disponibil, trebuie să configurați translator. De asemenea, puteți utiliza etichetele pentru traducere.
<a href="basket">{='Baskter'|translate}</a>
<span>{$item|translate}</span>
trim (string charlist =
" \t\n\r\0\x0B\u{A0}"
)
Elimină caracterele de început și de sfârșit, implicit spațiile albe.
{=' I like Latte. '|trim} {* outputs 'I like Latte.' *}
{=' I like Latte.'|trim: '.'} {* outputs ' I like Latte' *}
truncate (int length, string append =
'…'
)
Scurtează un șir de caractere până la lungimea maximă dată, dar încearcă să păstreze cuvintele întregi. În cazul în care șirul este trunchiat, adaugă elipse la sfârșit (acest lucru poate fi modificat prin intermediul celui de-al doilea parametru).
{var $title = 'Hello, how are you?'}
{$title|truncate:5} {* Hell… *}
{$title|truncate:17} {* Hello, how are… *}
{$title|truncate:30} {* Hello, how are you? *}
upper
Convertește o valoare în majuscule. Necesită extensia PHP mbstring
.
{='latte'|upper} {* outputs 'LATTE' *}
A se vedea, de asemenea, capitalize, firstUpper, lower.
webalize
Convertește în ASCII.
Convertește spațiile în cratimă. Îndepărtează caracterele care nu sunt alfanumerice, sublinieri sau cratime. Convertește în minuscule. Îndepărtează, de asemenea, spațiile albe de început și de sfârșit.
{var $s = 'Our 10. product'}
{$s|webalize} {* outputs 'our-10-product' *}
Necesită pachetul nette/utils.