Filtre Latte

Filtrele sunt funcții care modifică sau formatează datele în forma dorită. Acesta este un rezumat al filtrelor încorporate care sunt disponibile.

Transformare șiruri / matrice
batch listarea datelor liniare într-un tabel
breakLines inserează întreruperi de linie HTML înainte de toate liniile noi
bytes formatează dimensiunea în bytes
clamp fixează valoarea în intervalul
dataStream Conversia protocolului URI de date
date formatează data
explode separă un șir de caractere prin delimitatorul dat
first returnează primul element al unui array sau caracterul unui șir de caractere
implode unește un array cu un șir de caractere
indent indentează textul de la stânga cu un număr de tabulări
join unește un array cu un șir de caractere
last returnează ultimul element al unui array sau caracter al unui șir de caractere
length returnează lungimea unui șir sau a unui array
number formatează numere
padLeft completează șirul de caractere la o lungime dată din stânga
padRight completează șirul la lungimea dată dinspre dreapta
random returnează un element aleatoriu al unui array sau un caracter al unui șir de caractere
repeat repetă șirul
replace înlocuiește toate aparițiile șirului de căutare cu șirul de înlocuire
replaceRE înlocuiește toate aparițiile în funcție de expresia regulată
reverse inversează un șir sau o matrice UTF-8
slice extrage o porțiune dintr-un array sau un șir de caractere
sort sortează un array
spaceless elimină spațiile albe, similar cu tag-ul fără spațiu
split împarte un șir de caractere după delimitatorul dat
strip elimină spațiile albe
stripHtml elimină etichetele HTML și convertește entitățile HTML în text
substr returnează o parte din șir
trim elimină spațiile albe din șirul de caractere
translate traducere în alte limbi
truncate scurtează lungimea păstrând cuvinte întregi
webalize adaptează șirul UTF-8 la forma utilizată în URL
Casetarea literelor
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
Rotunjirea numerelor
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ă
Escaping
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.

Securitate
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: &lt;b&gt;hello&lt;/b&gt;
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&amp;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 &lt; two</p>'|stripHtml}  {* outputs 'one < two' *}

Textul simplu rezultat poate conține, în mod natural, caractere care reprezintă etichete HTML, de exemplu '&lt;p&gt;'|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.

versiune: 3.0