Latte szűrők
A szűrők olyan függvények, amelyek megváltoztatják vagy formázzák az adatokat a kívánt formára. Ez az összefoglaló a rendelkezésre álló beépített szűrőkről.
capitalize |
kisbetűs, minden szó első betűje nagybetűs |
firstUpper |
az első betűt nagybetűvé teszi. |
lower |
a karakterláncot kisbetűvé teszi |
upper |
nagybetűvé teszi a karakterláncot |
ceil |
kerekít egy számot egy adott pontosságig. |
floor |
Egy számot adott pontosságra kerekít lefelé. |
round |
kerekít egy számot adott pontosságra. |
escapeUrl |
az URL-ben szereplő paramétert elrejti |
noescape |
változó nyomtatása szaggatás nélkül. |
query |
lekérdezési karakterláncot generál az URL-ben. |
A HTML (escapeHtml
és escapeHtmlComment
), XML (escapeXml
), JavaScript
(escapeJs
), CSS (escapeCss
) és iCalendar (escapeICal
) számára is vannak escaping
szűrők, amelyeket a Latte a kontextustudatos
escapingnek köszönhetően maga használ, és nem kell megírni őket.
checkUrl |
szanálja a href attribútumon belül használt karakterláncot. |
nocheck |
megakadályozza az automatikus URL-szanálást. |
A src
és a href
attribútumokat automatikusan ellenőrzi, így a checkUrl
szűrőt szinte nem is kell használni.
Minden beépített szűrő UTF-8 kódolású karakterláncokkal működik.
Használat
A Latte lehetővé teszi a szűrők hívását a pipajel jelölés használatával (az előző szóköz megengedett):
<h1>{$heading|upper}</h1>
A szűrők láncolhatók, ebben az esetben balról jobbra haladva alkalmazandók:
<h1>{$heading|lower|capitalize}</h1>
A paraméterek a szűrő neve után kerülnek, kettősponttal vagy vesszővel elválasztva:
<h1>{$heading|truncate:20,''}</h1>
A szűrők kifejezésekre alkalmazhatók:
{var $name = ($title|upper) . ($subtitle|lower)}</h1>
Egyéni szűrők így regisztrálhatók:
$latte = new Latte\Engine;
$latte->addFilter('shortify', fn(string $s, int $len = 10) => mb_substr($s, 0, $len));
Egy sablonban így használjuk:
<p>{$text|shortify}</p>
<p>{$text|shortify:100}</p>
Szűrők
batch (int length, mixed item): array
Szűrő, amely leegyszerűsíti a lineáris adatok táblázatos formában történő felsorolását. Egy tömb tömböt ad vissza a megadott számú elemmel. Ha megad egy második paramétert, akkor ezt az utolsó sor hiányzó elemeinek kitöltésére használja.
{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>
Nyomtatás:
<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
HTML-sorszünetet illeszt be minden újsor előtt.
{var $s = "Text & with \n newline"}
{$s|breakLines} {* kimenetek "Text & with <br>\n newline" *}
bytes (int precision = 2)
Bájtban megadott méretet formázza ember által olvashatóvá.
{$size|bytes} 0 B, 1.25 GB, …
{$size|bytes:0} 10 B, 1 GB, …
ceil (int precision = 0)
Egy számot adott pontosságra kerekít.
{=3.4|ceil} {* kimenet 4 *}
{=135.22|ceil:1} {* kimenet 135.3 *}
{=135.22|ceil:3} {* kimenet 135.22 *}
capitalize
Visszaadja az érték címsoros változatát. A szavak nagybetűkkel kezdődnek, az összes többi karakter kisbetűs.
PHP-bővítményt igényel: mbstring
.
{='i like LATTE'|capitalize} {* kimenet 'I Like Latte' *}
Lásd még firstUpper, lower, upper.
checkUrl
Kényszeríti az URL szanálását. Ellenőrzi, hogy a változó tartalmaz-e webes URL-t (azaz HTTP/HTTPS protokollt), és megakadályozza a biztonsági kockázatot jelentő linkek írását.
{var $link = 'javascript:window.close()'}
<a data-href="{$link|checkUrl}">checked</a>
<a data-href="{$link}">unchecked</a>
Nyomtat:
<a data-href="">checked</a>
<a data-href="javascript:window.close()">unchecked</a>
Lásd mégeck.
clamp (int|float min, int|float max)
A min és max tartományba szorított értéket adja vissza.
{$level|clamp: 0, 255}
Létezik függvényként is.
dataStream (string mimetype = detect)
A tartalmat adat URI-sémává alakítja át. Használható képek HTML- vagy CSS-be való beillesztésére anélkül, hogy külső fájlokat kellene linkelni.
Legyen egy kép egy változóban $img = Image::fromFile('obrazek.gif')
, akkor
<img src="{$img|dataStream}">
Kinyomtatja például:
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUA
AAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO
9TXL0Y4OHwAAAABJRU5ErkJggg==">
PHP-bővítményt igényel: fileinfo
.
date (string format)
Visszaad egy dátumot a megadott formátumban a strftime vagy date PHP függvények opcióinak használatával. A szűrő a dátumot UNIX időbélyegként,
stringként vagy a DateTime
típusú objektumként kapja meg.
{$today|date:'%d.%m.%Y'}
{$today|date:'j. n. Y'}
escapeUrl
Kikerül egy változót, amelyet URL-ben paraméterként kell használni.
<a href="http://example.com/{$name|escapeUrl}">{$name}</a>
Lásd még query.
explode (string separator =
''
)
Egy karakterláncot a megadott elválasztójel alapján szétválaszt, és karakterláncok tömbjét adja vissza. Alias a
split
számára.
{='one,two,three'|explode:','} {* visszatér ['one', 'two', 'three'] *}
Ha az elválasztó üres karakterlánc (alapértelmezett érték), akkor a bemenet különálló karakterekre lesz felosztva:
{='123'|explode} {* returns ['1', '2', '3'] *}
Használhatja a split
aliast is:
{='1,2,3'|split:','} {* visszatér ['1', '2', '3'] *}
Lásd még: implode.
first
Visszaadja a tömb első elemét vagy a karakterlánc első karakterét:
{=[1, 2, 3, 4]|first} {* kimenet 1 *}
{='abcd'|first} {* kimenet 'a' *}
floor (int precision = 0)
Egy számot adott pontosságra kerekít.
{=3.5|floor} {* outputs 3 *}
{=135.79|floor:1} {* outputs 135.7 *}
{=135.79|floor:3} {* outputs 135.79 *}
firstUpper
Az érték első betűjét nagybetűvé alakítja. PHP-bővítményt igényel mbstring
.
{='the latte'|firstUpper} {* kimenetek 'The latte' *}
Lásd még nagybetű, kisbetű, nagybetű.
implode (string glue = ''
)
Visszaad egy stringet, amely a tömbben lévő stringek összevonása. Alias a következőhöz: join
.
{=[1, 2, 3]|implode} {* outputs '123' *}
{=[1, 2, 3]|implode:'|'} {* outputs '1|2|3' *}
A join
alias is használható:
{=[1, 2, 3]|join} {* outputs '123' *}
indent (int level = 1, string char =
"\t"
)
A szöveg balról történő behúzása egy adott számú tabulátorral vagy más karakterrel, amelyet a második választható argumentumban adunk meg. Az üres sorok nem kerülnek behúzásra.
<div>
{block |indent}
<p>Hello</p>
{/block}
</div>
Nyomtatás:
<div>
<p>Hello</p>
</div>
last
Visszaadja a tömb utolsó elemét vagy a karakterlánc utolsó karakterét:
{=[1, 2, 3, 4]|last} {* outputs 4 *}
{='abcd'|last} {* outputs 'd' *}
length
Egy karakterlánc vagy tömb hosszát adja vissza.
- a stringek esetében UTF-8 karakterekben adja vissza a hosszúságot.
- tömbök esetén az elemek számát adja vissza.
- a Countable interfészt megvalósító objektumok esetében a count() visszatérési értékét használja.
- az IteratorAggregate interfészt megvalósító objektumok esetében az iterator_count() visszatérési értékét használja.
{if ($users|length) > 10}
...
{/if}
lower
Egy értéket kisbetűvé alakít. PHP-bővítményt igényel mbstring
.
{='LATTE'|lower} {* outputs 'latte' *}
Lásd még capitalize, firstUpper, upper.
nocheck
Megakadályozza az automatikus URL-szanálást. A Latte automatikusan ellenőrzi, hogy a változó tartalmaz-e webes URL-t (azaz HTTP/HTTPS protokollt), és megakadályozza a biztonsági kockázatot jelentő linkek írását.
Ha a hivatkozás más sémát használ, például javascript:
vagy data:
, és biztos a tartalmában,
akkor a |nocheck
segítségével kikapcsolhatja az ellenőrzést.
{var $link = 'javascript:window.close()'}
<a href="{$link}">checked</a>
<a href="{$link|nocheck}">unchecked</a>
Nyomtatások:
<a href="">checked</a>
<a href="javascript:window.close()">unchecked</a>
Lásd még checkUrl.
noescape
Letiltja az automatikus escapinget.
{var $trustedHtmlString = '<b>hello</b>'}
Escaped: {$trustedHtmlString}
Unescaped: {$trustedHtmlString|noescape}
Nyomtat:
Escaped: <b>hello</b>
Unescaped: <b>hello</b>
A noescape
szűrő visszaélése XSS sebezhetőséghez vezethet! Soha ne használja, hacsak nem
teljesen biztos abban, hogy mit csinál, és hogy a nyomtatott karakterlánc megbízható forrásból származik.
number (int decimals = 0, string decPoint =
'.'
, string thousandsSep = ','
)
Egy számot adott számú tizedesjegyig formáz. Megadhatja a tizedesvessző és az ezres elválasztó karakterét is.
{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 =
' '
)
Egy adott hosszúságú karakterláncot balról egy másik karakterlánccal kitölti.
{='hello'|padLeft: 10, '123'} {* outputs '12312hello' *}
padRight (int length, string pad =
' '
)
Egy adott hosszúságú karakterláncot egy másik, jobbról jövő karakterlánccal kitölti.
{='hello'|padRight: 10, '123'} {* outputs 'hello12312' *}
query
Dinamikusan generál egy lekérdezési karakterláncot az URL-ben:
<a href="http://example.com/?{[name: 'John Doe', age: 43]|query}">click</a>
<a href="http://example.com/?search={$search|query}">search</a>
Nyomtat:
<a href="http://example.com/?name=John+Doe&age=43">click</a>
<a href="http://example.com/?search=Foo+Bar">search</a>
A null
értékű kulcsok nem szerepelnek.
Lásd még escapeUrl.
random
Visszaadja a tömb véletlenszerű elemét vagy a karakterlánc karakterét:
{=[1, 2, 3, 4]|random} {* example output: 3 *}
{='abcd'|random} {* example output: 'b' *}
repeat (int count)
Megismétli a karakterláncot x-szer.
{='hello'|repeat: 3} {* outputs 'hellohellohello' *}
replace (string|array search, string replace =
''
)
A keresett karakterlánc minden előfordulását helyettesítő karakterlánccal helyettesíti.
{='hello world'|replace: 'world', 'friend'} {* outputs 'hello friend' *}
Egyszerre több csere is elvégezhető:
{='hello world'|replace: [h => l, l => h]} {* outputs 'lehho worhd' *}
replaceRE (string pattern, string replace =
''
)
Az összes előfordulást helyettesíti a reguláris kifejezésnek megfelelően.
{='hello world'|replaceRE: '/l.*/', 'l'} {* outputs 'hel' *}
reverse
Megfordítja a megadott karakterláncot vagy tömböt.
{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)
Egy számot adott pontosságra kerekít.
{=3.4|round} {* outputs 3 *}
{=3.5|round} {* outputs 4 *}
{=135.79|round:1} {* outputs 135.8 *}
{=135.79|round:3} {* outputs 135.79 *}
slice (int start, int length = null, bool preserveKeys = false)
Egy tömb vagy egy karakterlánc egy szeletének kivonása.
{='hello'|slice: 1, 2} {* outputs 'el' *}
{=['a', 'b', 'c']|slice: 1, 2} {* outputs ['b', 'c'] *}
A slice-szűrő a array_slice
PHP-funkcióként működik tömbök esetében, a mb_substr
pedig
karakterláncok esetében, UTF-8 módban a iconv_substr
-re való visszalépéssel.
Ha a kezdet nem negatív, akkor a szekvencia a változóban ezzel a kezdőponttal kezdődik. Ha a start negatív, akkor a szekvencia a változó végétől ilyen messze kezdődik.
Ha a length értéke pozitív, akkor a szekvencia legfeljebb ennyi elemet tartalmaz. Ha a változó rövidebb, mint a hossz, akkor csak a rendelkezésre álló változóelemek lesznek jelen. Ha a hossz meg van adva és negatív, akkor a sorozat ennyi elemmel a változó vége előtt fog megállni. Ha nem adjuk meg, akkor a szekvencia az eltolódástól a változó végéig mindent tartalmazni fog.
A Filter alapértelmezés szerint átrendezi és visszaállítja az integer tömb kulcsát. Ez a viselkedés megváltoztatható a preserveKeys true értékre állításával. A string kulcsok ettől a paramétertől függetlenül mindig megmaradnak.
sort
Szűrő, amely egy tömböt rendezi és fenntartja az index hozzárendelést.
{foreach ($names|sort) as $name}
...
{/foreach}
A tömb fordított sorrendbe rendezve.
{foreach ($names|sort|reverse) as $name}
...
{/foreach}
Saját összehasonlító függvényt adhat át paraméterként:
{var $sorted = ($names|sort: fn($a, $b) => $b <=> $a)}
spaceless
Eltávolítja a felesleges szóközöket a kimenetből. Használhatod a strip
aliast is.
{block |spaceless}
<ul>
<li>Hello</li>
</ul>
{/block}
Nyomtat:
<ul> <li>Hello</li> </ul>
stripHtml
A HTML-t egyszerű szöveggé alakítja. Vagyis eltávolítja a HTML-címkéket, és a HTML-egységeket szöveggé alakítja.
{='<p>one < two</p>'|stripHtml} {* outputs 'one < two' *}
Az így kapott sima szöveg természetesen tartalmazhat olyan karaktereket, amelyek HTML-címkéket képviselnek, például a
'<p>'|stripHtml
átváltozik <p>
. Soha ne adja ki az eredményül kapott szöveget a
|noescape
címmel, mivel ez biztonsági réshez vezethet.
substr (int offset, int length = null)
Kivonja egy karakterlánc egy szeletét. Ezt a szűrőt felváltotta a slice szűrő.
{$string|substr: 1, 2}
translate (string message, …args)
Kifejezéseket fordít le más nyelvekre. Ahhoz, hogy a szűrő elérhető legyen, be kell állítania a fordítót. A címkéket is használhatja a fordításhoz.
<a href="basket">{='Baskter'|translate}</a>
<span>{$item|translate}</span>
trim (string charlist =
" \t\n\r\0\x0B\u{A0}"
)
Vezető és követő karakterek eltávolítása, alapértelmezés szerint szóköz.
{=' I like Latte. '|trim} {* outputs 'I like Latte.' *}
{=' I like Latte.'|trim: '.'} {* outputs ' I like Latte' *}
truncate (int length, string append =
'…'
)
Rövidíti a karakterláncot a megadott maximális hosszúságra, de megpróbálja megőrizni az egész szavakat. Ha a karakterlánc csonkolva van, ellipszist ad a végére (ez a második paraméterrel módosítható).
{var $title = 'Hello, how are you?'}
{$title|truncate:5} {* Hell… *}
{$title|truncate:17} {* Hello, how are… *}
{$title|truncate:30} {* Hello, how are you? *}
upper
Egy értéket nagybetűvé alakít. A mbstring
PHP-bővítményt igényli.
{='latte'|upper} {* outputs 'LATTE' *}
Lásd még capitalize, firstUpper, lower.
webalize
Átalakítja ASCII-re.
A szóközöket kötőjelekké alakítja. Eltávolítja a nem alfanumerikus karaktereket, aláhúzásokat vagy kötőjeleket. Átalakítja kisbetűvé. Eltávolítja a vezető és az utolsó szóközöket is.
{var $s = 'Our 10. product'}
{$s|webalize} {* outputs 'our-10-product' *}
Szükséges a nette/utils csomag.