Nette Documentation Preview

syntax
Filtry do latte
***************

.[perex]
Możemy używać funkcji w szablonach, aby pomóc w edycji lub przeformatowaniu danych do ostatecznej postaci. Nazywamy je *filtrami*.

.[table-latte-filters]
|## Transformacja
| `batch` | [wyodrębnić dane liniowe do tabeli |#batch]
| `breakLines` | [Dodaj przerwę w linii HTML przed końcem linii |#breakLines]
| `bytes` | [rozmiar formatu w bajtach |#bytes]
| `clamp` | [ogranicza wartość do podanego zakresu |#clamp]
| `dataStream` | [konwersja dla protokołu Data URI |#dataStream]
| `date` | [formatuje datę |#date]
| `explode` | [dzieli łańcuch na pola zgodnie z delimiterem |#explode]
| `first` | [zwraca pierwszy element tablicy lub znak łańcucha|#first]
| `implode` | [łączy pola w ciąg znaków|#implode]
| `indent` | [przesuwa tekst od lewej strony o podaną liczbę tabulatorów |#indent]
| `join` | [konkatenuje tablicę w ciąg znaków|#implode]
| `last` | [zwraca ostatni element tablicy lub znak łańcucha|#last]
| `length` | [zwraca długość łańcucha w znakach lub tablicy |#length]
| `number` | [formatuje liczbę |#number]
| `padLeft` | [uzupełnia ciąg od lewej do pożądanej długości |#padLeft]
| `padRight` | [uzupełnia ciąg od prawej do pożądanej długości |#padRight]
| `random` | [zwraca losowy element tablicy lub znak łańcuchowy|#random]
| `repeat` | [powtórzyć ciąg |#repeat]
| `replace` | [Zamień wystąpienia szukanego ciągu znaków|#replace]
| `replaceRE` | [zamienia wystąpienia zgodnie z wyrażeniem regularnym |#replaceRE]
| `reverse` | [odwrócony ciąg lub tablica UTF-8 |#reverse]
| `slice` | [wyciąga część tablicy lub łańcucha|#slice]
| `sort` | [sortuje tablicę |#sort]
| `spaceless` | [usuwa białą |#spaceless] przestrzeń, podobnie jak znacznik [bez spacji |tags]
| `split` | [dzieli łańcuch na tablice według separatora |#explode]
| `strip` | [usuwa białe spacje |#spaceless]
| `stripHtml` | [usuwa znaczniki HTML i zamienia elementy HTML na znaki |#stripHtml]
| `substr` | [zwraca część łańcucha|#substr]
| `trim` | [usuwa wiodące i końcowe spacje lub inne znaki |#trim]
| `translate` | [tłumaczenie na inne języki |#translate]
| `truncate` | [skraca długość, zachowując słowa |#truncate]
| `webalize` | [modyfikuje ciąg UTF-8 do formatu używanego w URL |#webalize]

.[table-latte-filters]
|Każda sprawa
| `capitalize` | [mała litera, pierwsza litera w słowach wielka litera |#capitalize]
| `firstUpper` | [zamień pierwszą literę na wielką |#firstUpper]
| `lower` | [konwersja na małe litery |#lower]
| `upper` | [konwersja do wielkich liter |#upper]

.[table-latte-filters]
|## Zaokrąglenie
| `ceil` | [zaokrągla liczbę do podanej precyzji |#ceil]
| `floor` | [zaokrągla liczbę w dół do podanej precyzji |#floor]
| `round` | [zaokrągla liczbę do podanej precyzji |#round]

.[table-latte-filters]
|## Ucieczka
| `escapeUrl` | [ucieka od parametru w URL |#escapeUrl]
| `noescape` | [wypisuje zmienną bez ucieczki |#noescape]
| `query` | [generuje ciąg zapytania w URL |#query]

Istnieją również filtry ucieczki dla HTML (`escapeHtml` i `escapeHtmlComment`), XML (`escapeXml`), JavaScript (`escapeJs`), CSS (`escapeCss`) i iCalendar (`escapeICal`), które Latte używa samodzielnie dzięki [ucieczce kontekstowej |safety-first#Context-Aware-Escaping] i nie musisz ich pisać.

.[table-latte-filters]
|## Bezpieczeństwo
| `checkUrl` | [traktuje URL z niebezpiecznych wejść |#checkUrl]
| `nocheck` | [zapobiega automatycznemu przetwarzaniu adresów URL |#nocheck]

Latte [sprawdza automatycznie |safety-first#link-checking] atrybuty `src` i `href`, więc prawie nie trzeba używać filtra `checkUrl`.


.[note]
Wszystkie domyślne filtry są dla ciągów zakodowanych w UTF-8.


Użycie .[#toc-usage]
====================

Filtry zapisywane są po pionowym pasku (mogą być poprzedzone spacją):

```latte
<h1>{$heading|upper}</h1>
```

Filtry (w starszych wersjach pomocnicy) mogą być konkatenowane, a następnie stosowane w kolejności od lewej do prawej:

```latte
<h1>{$heading|lower|capitalize}</h1>
```

Parametry wprowadzane są po nazwie filtra, oddzielone dwukropkami lub przecinkami:

```latte
<h1>{$heading|truncate:20,''}</h1>
```

Filtry mogą być również stosowane do wyrażenia:

```latte
{var $name = ($title|upper) . ($subtitle|lower)}</h1>
```

[Filtry niestandardowe |extending-latte#Filters] można zarejestrować w następujący sposób:

```php
$latte = new Latte\Engine;
$latte->addFilter('shortify', fn(string $s, int $len = 10) => mb_substr($s, 0, $len));
```

W szablonie jest on wówczas nazywany w następujący sposób:

```latte
<p>{$text|shortify}</p>
<p>{$text|shortify:100}</p>
```


Filtry .[#toc-filters]
======================


batch(int length, mixed item): array .[filter]
----------------------------------------------
Filtr, który upraszcza wyprowadzenie danych liniowych do tabeli. Zwraca tablicę pól o określonej liczbie elementów. Jeśli określisz drugi parametr, jest on używany do wypełnienia brakujących elementów w ostatnim wierszu.

```latte
{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>
```

Wydruki:

```latte
<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 .[filter]
--------------------
Wstawia podziały linii HTML przed wszystkimi liniami nowymi.

```latte
{var $s = "Text & with \n newline"}
{$s|breakLines}    {* vypíše "Text &amp; with <br>\n newline" *}
```


bytes(int precision = 2) .[filter]
----------------------------------
Formatuje rozmiar w bajtach do postaci czytelnej dla człowieka.

```latte
{$size|bytes}     0 B, 1.25 GB, …
{$size|bytes:0}   10 B, 1 GB, …
```


ceil(int precision = 0) .[filter]
---------------------------------
Zaokrągla liczbę do określonej precyzji.

```latte
{=3.4|ceil}         {* outputs 4      *}
{=135.22|ceil:1}    {* outputs 135.3  *}
{=135.22|ceil:3}    {* outputs 135.22 *}
```

Patrz także [podłoga |#floor], [okrągła |#round].


capitalize .[filter]
--------------------
Zwraca tytułową wersję wartości. Słowa będą zaczynać się od dużych liter, wszystkie pozostałe znaki są małe. Wymaga rozszerzenia PHP `mbstring`.

```latte
{='i like LATTE'|capitalize}  {* outputs 'I Like Latte' *}
```

Zobacz także [firstUpper |#firstUpper], [lower |#lower], [upper |#upper].


checkUrl .[filter]
------------------
Wymusza sanityzację adresów URL. Sprawdza czy zmienna zawiera adres URL strony internetowej (tj. protokół HTTP/HTTPS) i zapobiega zapisywaniu linków, które mogą stanowić zagrożenie bezpieczeństwa.

```latte
{var $link = 'javascript:window.close()'}
<a data-href={$link|checkUrl}>checked</a>
<a data-href={$link}>unchecked</a>
```

Wydruki:

```latte
<a data-href="">checked</a>
<a data-href="javascript:window.close()">unchecked</a>
```

Zobacz również [nocheck |#nocheck].


clamp(int|float min, int|float max) .[filter]
---------------------------------------------
Zwraca wartość zaciśniętą na inkluzywnym zakresie min i max.

```latte
{$level|clamp: 0, 255}
```

Istnieje również jako [funkcja |functions#clamp].


dataStream(string mimetype = detect) .[filter]
----------------------------------------------
Konwertuje zawartość na schemat URI danych. Może być używany do wstawiania obrazów do HTML lub CSS bez potrzeby łączenia plików zewnętrznych.

Załóżmy, że mamy obrazek w zmiennej `$img = Image::fromFile('obrazek.gif')`, to

```latte
<img src={$img|dataStream}>
```

Drukuje na przykład:

```latte
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUA
AAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO
9TXL0Y4OHwAAAABJRU5ErkJggg==">
```

.[caution]
Wymaga rozszerzenia PHP `fileinfo`.


date(string format) .[filter]
-----------------------------
Zwraca datę w podanym formacie przy użyciu opcji funkcji PHP [php:strftime] lub [php:date]. Filtr pobiera datę jako timestamp UNIX, łańcuch znaków lub obiekt typu `DateTime`.

```latte
{$today|date:'%d.%m.%Y'}
{$today|date:'j. n. Y'}
```


escapeUrl .[filter]
-------------------
Ucieka od zmiennej, która ma być użyta jako parametr w URL.

```latte
<a href="http://example.com/{$name|escapeUrl}">{$name}</a>
```

Zobacz również [zapytanie |#query].


explode(string separator = '') .[filter]
----------------------------------------
Rozdziela łańcuch przez podany delimiter i zwraca tablicę łańcuchów. Alias dla `split`.

```latte
{='one,two,three'|explode:','}    {* returns ['one', 'two', 'three'] *}
```

Jeśli delimiterem jest pusty łańcuch (wartość domyślna), to wejście zostanie podzielone na pojedyncze znaki:

```latte
{='123'|explode}                  {* returns ['1', '2', '3'] *}
```

Możesz użyć także aliasu `split`:

```latte
{='1,2,3'|split:','}              {* returns ['1', '2', '3'] *}
```

Zobacz również [implode |#implode].


first .[filter]
---------------
Zwraca pierwszy element tablicy lub znak łańcucha:

```latte
{=[1, 2, 3, 4]|first}    {* outputs 1 *}
{='abcd'|first}          {* outputs 'a' *}
```

Zobacz także [last |#last], [random |#random].


floor(int precision = 0) .[filter]
----------------------------------
Zaokrągla liczbę do określonej dokładności.

```latte
{=3.5|floor}        {* outputs 3      *}
{=135.79|floor:1}   {* outputs 135.7  *}
{=135.79|floor:3}   {* outputs 135.79 *}
```

Zobacz także [ceil |#ceil], [round |#round].


firstUpper .[filter]
--------------------
Konwertuje pierwszą literę wartości na duże. Wymaga rozszerzenia PHP `mbstring`.

```latte
{='the latte'|firstUpper}  {* outputs 'The latte' *}
```

Zobacz także [capitalize |#capitalize], [lower |#lower], [upper |#upper].


implode(string glue = '') .[filter]
-----------------------------------
Zwraca łańcuch będący konkatenacją łańcuchów w tablicy. Alias dla `join`.

```latte
{=[1, 2, 3]|implode}      {* outputs '123' *}
{=[1, 2, 3]|implode:'|'}  {* outputs '1|2|3' *}
```

Możesz również użyć aliasu `join`:

```latte
{=[1, 2, 3]|join}         {* outputs '123' *}
```


indent(int level = 1, string char = "\t") .[filter]
---------------------------------------------------
Wcina tekst od lewej strony o określoną liczbę tabulatorów lub innych znaków, które podajemy w drugim opcjonalnym argumencie. Puste linie nie są wcięte.

```latte
<div>
{block |indent}
<p>Hello</p>
{/block}
</div>
```

Drukuje:

```latte
<div>
	<p>Hello</p>
</div>
```


last .[filter]
--------------
Zwraca ostatni element tablicy lub znak łańcucha:

```latte
{=[1, 2, 3, 4]|last}    {* outputs 4 *}
{='abcd'|last}          {* outputs 'd' *}
```

Zobacz także [first |#first], [random |#random].


length .[filter]
----------------
Zwraca długość łańcucha lub tablicy.

- dla łańcuchów, zwróci długość w znakach UTF-8
- dla tablic, zwróci liczbę elementów
- dla obiektów implementujących interfejs Countable, użyje wartości zwracanej przez count()
- dla obiektów implementujących interfejs IteratorAgregate, użyje wartości zwracanej przez iterator_count()


```latte
{if ($users|length) > 10}
	...
{/if}
```


lower .[filter]
---------------
Konwertuje wartość na małe litery. Wymaga rozszerzenia PHP `mbstring`.

```latte
{='LATTE'|lower}   {* outputs 'latte' *}
```

Zobacz także [capitalize |#capitalize], [firstUpper |#firstUpper], [upper |#upper].


nocheck .[filter]
-----------------
Zapobiega automatycznej sanityzacji adresów URL. Latte [automatycznie sprawdza |safety-first#Link checking], czy zmienna zawiera adres URL strony internetowej (tj. protokół HTTP/HTTPS) i zapobiega zapisywaniu linków, które mogą stanowić zagrożenie dla bezpieczeństwa.

Jeśli link używa innego schematu, takiego jak `javascript:` lub `data:`, i jesteś pewien jego zawartości, możesz wyłączyć sprawdzanie poprzez `|nocheck`.

```latte
{var $link = 'javascript:window.close()'}

<a href={$link}>checked</a>
<a href={$link|nocheck}>unchecked</a>
```

Wydruki:

```latte
<a href="">checked</a>
<a href="javascript:window.close()">unchecked</a>
```

Zobacz także [checkUrl |#checkUrl].


noescape .[filter]
------------------
Wyłącza automatyczne uciekanie.

```latte
{var $trustedHtmlString = '<b>hello</b>'}
Escaped: {$trustedHtmlString}
Unescaped: {$trustedHtmlString|noescape}
```

Drukuje:

```latte
Escaped: &lt;b&gt;hello&lt;/b&gt;
Unescaped: <b>hello</b>
```

.[warning]
Niewłaściwe użycie filtra `noescape` może prowadzić do luki XSS! Nigdy nie używaj go, jeśli nie jesteś **absolutnie pewien** tego, co robisz i że drukowany ciąg pochodzi z zaufanego źródła.


number(int decimals = 0, string decPoint = '.', string thousandsSep = ',') .[filter]
------------------------------------------------------------------------------------
Formatuje liczbę do podanej liczby miejsc dziesiętnych. Można również określić znak kropki dziesiętnej i separatora tysięcy.

```latte
{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 = ' ') .[filter]
-----------------------------------------------
Przekłada łańcuch o określonej długości z innym łańcuchem od lewej.

```latte
{='hello'|padLeft: 10, '123'}  {* outputs '12312hello' *}
```


padRight(int length, string pad = ' ') .[filter]
------------------------------------------------
Wyrównuje ciąg do pewnej długości z innym ciągiem od prawej.

```latte
{='hello'|padRight: 10, '123'}  {* outputs 'hello12312' *}
```


query  .[filter]
----------------
Dynamicznie generuje ciąg zapytania w adresie URL:

```latte
<a href="http://example.com/?{[name: 'John Doe', age: 43]|query}">click</a>
<a href="http://example.com/?search={$search|query}">search</a>
```

Drukuje:

```latte
<a href="http://example.com/?name=John+Doe&amp;age=43">click</a>
<a href="http://example.com/?search=Foo+Bar">search</a>
```

Klucze o wartości `null` są pomijane.

Zobacz również [escapeUrl |#escapeUrl].


random .[filter]
----------------
Zwraca losowy element tablicy lub znak łańcucha:

```latte
{=[1, 2, 3, 4]|random}    {* example output: 3 *}
{='abcd'|random}          {* example output: 'b' *}
```

Zobacz również [first |#first], [last |#last].


repeat(int count) .[filter]
---------------------------
Powtarza łańcuch x razy.

```latte
{='hello'|repeat: 3}  {* outputs 'hellohellohello' *}
```


replace(string|array search, string replace = '') .[filter]
-----------------------------------------------------------
Zastępuje wszystkie wystąpienia szukanego łańcucha łańcuchem zastępczym.

```latte
{='hello world'|replace: 'world', 'friend'}  {* outputs 'hello friend' *}
```

Można dokonać wielu zamian jednocześnie:

```latte
{='hello world'|replace: [h => l, l => h]}  {* outputs 'lehho worhd' *}
```


replaceRE(string pattern, string replace = '') .[filter]
--------------------------------------------------------
Zastępuje wszystkie wystąpienia zgodnie z wyrażeniem regularnym.

```latte
{='hello world'|replaceRE: '/l.*/', 'l'}  {* outputs 'hel' *}
```


reverse .[filter]
-----------------
Odwraca podany łańcuch lub tablicę.

```latte
{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) .[filter]
----------------------------------
Zaokrągla liczbę do określonej precyzji.

```latte
{=3.4|round}        {* outputs 3      *}
{=3.5|round}        {* outputs 4      *}
{=135.79|round:1}   {* outputs 135.8  *}
{=135.79|round:3}   {* outputs 135.79 *}
```

Zobacz także [ceil |#ceil], [floor |#floor].


slice(int start, int length = null, bool preserveKeys = false) .[filter]
------------------------------------------------------------------------
Wyodrębnia fragment tablicy lub ciągu znaków.

```latte
{='hello'|slice: 1, 2}           {* outputs 'el' *}
{=['a', 'b', 'c']|slice: 1, 2}   {* outputs ['b', 'c'] *}
```

Filtr plasterkowy działa jak funkcja `array_slice` PHP dla tablic i `mb_substr` dla łańcuchów z możliwością powrotu do `iconv_substr` w trybie UTF-8.

Jeśli początek jest nieujemny, to sekwencja rozpocznie się od tego początku w zmiennej. Jeśli start jest ujemny, sekwencja rozpocznie się tak daleko od końca zmiennej.

Jeśli podana jest długość i jest ona dodatnia, to sekwencja będzie miała do tylu elementów. Jeśli zmienna jest krótsza niż długość, to w sekwencji znajdą się tylko dostępne elementy zmiennej. Jeśli podana jest długość i jest ona ujemna, to sekwencja zatrzyma się o tyle elementów od końca zmiennej. Jeśli jest pominięta, to sekwencja będzie miała wszystko od offsetu aż do końca zmiennej.

Filtr domyślnie zmieni kolejność i wyzeruje klucze tablicy liczb całkowitych. To zachowanie można zmienić ustawiając preserveKeys na true. Klucze łańcuchowe są zawsze zachowywane, niezależnie od tego parametru.


sort  .[filter]
---------------
Filtr, który sortuje tablicę i zachowuje asocjację indeksów.

```latte
{foreach ($names|sort) as $name}
	...
{/foreach}
```

Tablica posortowana w odwrotnej kolejności.

```latte
{foreach ($names|sort|reverse) as $name}
	...
{/foreach}
```

Możesz przekazać własną funkcję porównania jako parametr:

```latte
{var $sorted = ($names|sort: fn($a, $b) => $b <=> $a)}
```


spaceless  .[filter]
--------------------
Usuwa niepotrzebne białe przestrzenie z wyjścia. Możesz również użyć aliasu `strip`.

```latte
{block |spaceless}
	<ul>
		<li>Hello</li>
	</ul>
{/block}
```

Drukuje:

```latte
<ul> <li>Hello</li> </ul>
```


stripHtml .[filter]
-------------------
Konwertuje HTML na zwykły tekst. To znaczy, usuwa znaczniki HTML i konwertuje encje HTML na tekst.

```latte
{='<p>one &lt; two</p>'|stripHtml}  {* outputs 'one < two' *}
```

Wynikowy zwykły tekst może naturalnie zawierać znaki reprezentujące znaczniki HTML, na przykład `'&lt;p&gt;'|stripHtml` jest konwertowany na `<p>`. Nigdy nie wyprowadzaj wynikowego tekstu za pomocą `|noescape`, ponieważ może to prowadzić do luki w zabezpieczeniach.


substr(int offset, int length = null) .[filter]
-----------------------------------------------
Wyodrębnia fragment łańcucha. Ten filtr został zastąpiony przez filtr [slice |#slice].

```latte
{$string|substr: 1, 2}
```


translate(string message, ...args) .[filter]
--------------------------------------------
Tłumaczy wyrażenia na inne języki. Aby udostępnić ten filtr, musisz skonfigurować [translator |develop#TranslatorExtension]. Możesz również użyć [tagów do tłumaczenia |tags#Translation].

```latte
<a href="basket">{='Baskter'|translate}</a>
<span>{$item|translate}</span>
```


trim(string charlist = " \t\n\r\0\x0B\u{A0}") .[filter]
-------------------------------------------------------
Strip leading and trailing characters, by default whitespace.

```latte
{='  I like Latte.  '|trim}    {* outputs 'I like Latte.' *}
{='  I like Latte.'|trim: '.'} {* outputs '  I like Latte' *}
```


truncate(int length, string append = '…') .[filter]
---------------------------------------------------
Skraca łańcuch do maksymalnej podanej długości, ale stara się zachować całe słowa. Jeśli łańcuch jest obcięty, dodaje na końcu elipsę (można to zmienić drugim parametrem).

```latte
{var $title = 'Hello, how are you?'}
{$title|truncate:5}  {* Hell…                *}
{$title|truncate:17} {* Hello, how are…      *}
{$title|truncate:30} {* Hello, how are you?  *}
```


upper .[filter]
---------------
Konwertuje wartość na duże litery. Wymaga rozszerzenia PHP `mbstring`.

```latte
{='latte'|upper}  {* outputs 'LATTE' *}
```

Zobacz także [capitalize |#capitalize], [firstUpper |#firstUpper], [lower |#lower].


webalize .[filter]
------------------
Konwertuje na ASCII.

Zamienia spacje na myślniki. Usuwa znaki, które nie są alfanumeryczne, podkreślenia lub myślniki. Konwertuje na małe litery. Usuwa również wiodącą i końcową białą przestrzeń.

```latte
{var $s = 'Our 10. product'}
{$s|webalize}    {* outputs 'our-10-product' *}
```

.[caution]
Wymaga pakietu [nette/utils |utils:].

Filtry do latte

Możemy używać funkcji w szablonach, aby pomóc w edycji lub przeformatowaniu danych do ostatecznej postaci. Nazywamy je filtrami.

Transformacja
batch wyodrębnić dane liniowe do tabeli
breakLines Dodaj przerwę w linii HTML przed końcem linii
bytes rozmiar formatu w bajtach
clamp ogranicza wartość do podanego zakresu
dataStream konwersja dla protokołu Data URI
date formatuje datę
explode dzieli łańcuch na pola zgodnie z delimiterem
first zwraca pierwszy element tablicy lub znak łańcucha
implode łączy pola w ciąg znaków
indent przesuwa tekst od lewej strony o podaną liczbę tabulatorów
join konkatenuje tablicę w ciąg znaków
last zwraca ostatni element tablicy lub znak łańcucha
length zwraca długość łańcucha w znakach lub tablicy
number formatuje liczbę
padLeft uzupełnia ciąg od lewej do pożądanej długości
padRight uzupełnia ciąg od prawej do pożądanej długości
random zwraca losowy element tablicy lub znak łańcuchowy
repeat powtórzyć ciąg
replace Zamień wystąpienia szukanego ciągu znaków
replaceRE zamienia wystąpienia zgodnie z wyrażeniem regularnym
reverse odwrócony ciąg lub tablica UTF-8
slice wyciąga część tablicy lub łańcucha
sort sortuje tablicę
spaceless usuwa białą przestrzeń, podobnie jak znacznik bez spacji
split dzieli łańcuch na tablice według separatora
strip usuwa białe spacje
stripHtml usuwa znaczniki HTML i zamienia elementy HTML na znaki
substr zwraca część łańcucha
trim usuwa wiodące i końcowe spacje lub inne znaki
translate tłumaczenie na inne języki
truncate skraca długość, zachowując słowa
webalize modyfikuje ciąg UTF-8 do formatu używanego w URL
Każda sprawa
capitalize mała litera, pierwsza litera w słowach wielka litera
firstUpper zamień pierwszą literę na wielką
lower konwersja na małe litery
upper konwersja do wielkich liter
Zaokrąglenie
ceil zaokrągla liczbę do podanej precyzji
floor zaokrągla liczbę w dół do podanej precyzji
round zaokrągla liczbę do podanej precyzji
Ucieczka
escapeUrl ucieka od parametru w URL
noescape wypisuje zmienną bez ucieczki
query generuje ciąg zapytania w URL

Istnieją również filtry ucieczki dla HTML (escapeHtml i escapeHtmlComment), XML (escapeXml), JavaScript (escapeJs), CSS (escapeCss) i iCalendar (escapeICal), które Latte używa samodzielnie dzięki ucieczce kontekstowej i nie musisz ich pisać.

Bezpieczeństwo
checkUrl traktuje URL z niebezpiecznych wejść
nocheck zapobiega automatycznemu przetwarzaniu adresów URL

Latte sprawdza automatycznie atrybuty src i href, więc prawie nie trzeba używać filtra checkUrl.

Wszystkie domyślne filtry są dla ciągów zakodowanych w UTF-8.

Użycie

Filtry zapisywane są po pionowym pasku (mogą być poprzedzone spacją):

<h1>{$heading|upper}</h1>

Filtry (w starszych wersjach pomocnicy) mogą być konkatenowane, a następnie stosowane w kolejności od lewej do prawej:

<h1>{$heading|lower|capitalize}</h1>

Parametry wprowadzane są po nazwie filtra, oddzielone dwukropkami lub przecinkami:

<h1>{$heading|truncate:20,''}</h1>

Filtry mogą być również stosowane do wyrażenia:

{var $name = ($title|upper) . ($subtitle|lower)}</h1>

Filtry niestandardowe można zarejestrować w następujący sposób:

$latte = new Latte\Engine;
$latte->addFilter('shortify', fn(string $s, int $len = 10) => mb_substr($s, 0, $len));

W szablonie jest on wówczas nazywany w następujący sposób:

<p>{$text|shortify}</p>
<p>{$text|shortify:100}</p>

Filtry

batch (int length, mixed item)array

Filtr, który upraszcza wyprowadzenie danych liniowych do tabeli. Zwraca tablicę pól o określonej liczbie elementów. Jeśli określisz drugi parametr, jest on używany do wypełnienia brakujących elementów w ostatnim wierszu.

{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>

Wydruki:

<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

Wstawia podziały linii HTML przed wszystkimi liniami nowymi.

{var $s = "Text & with \n newline"}
{$s|breakLines}    {* vypíše "Text &amp; with <br>\n newline" *}

bytes (int precision = 2)

Formatuje rozmiar w bajtach do postaci czytelnej dla człowieka.

{$size|bytes}     0 B, 1.25 GB, …
{$size|bytes:0}   10 B, 1 GB, …

ceil (int precision = 0)

Zaokrągla liczbę do określonej precyzji.

{=3.4|ceil}         {* outputs 4      *}
{=135.22|ceil:1}    {* outputs 135.3  *}
{=135.22|ceil:3}    {* outputs 135.22 *}

Patrz także podłoga, okrągła.

capitalize

Zwraca tytułową wersję wartości. Słowa będą zaczynać się od dużych liter, wszystkie pozostałe znaki są małe. Wymaga rozszerzenia PHP mbstring.

{='i like LATTE'|capitalize}  {* outputs 'I Like Latte' *}

Zobacz także firstUpper, lower, upper.

checkUrl

Wymusza sanityzację adresów URL. Sprawdza czy zmienna zawiera adres URL strony internetowej (tj. protokół HTTP/HTTPS) i zapobiega zapisywaniu linków, które mogą stanowić zagrożenie bezpieczeństwa.

{var $link = 'javascript:window.close()'}
<a data-href={$link|checkUrl}>checked</a>
<a data-href={$link}>unchecked</a>

Wydruki:

<a data-href="">checked</a>
<a data-href="javascript:window.close()">unchecked</a>

Zobacz również nocheck.

clamp (int|float min, int|float max)

Zwraca wartość zaciśniętą na inkluzywnym zakresie min i max.

{$level|clamp: 0, 255}

Istnieje również jako funkcja.

dataStream (string mimetype = detect)

Konwertuje zawartość na schemat URI danych. Może być używany do wstawiania obrazów do HTML lub CSS bez potrzeby łączenia plików zewnętrznych.

Załóżmy, że mamy obrazek w zmiennej $img = Image::fromFile('obrazek.gif'), to

<img src={$img|dataStream}>

Drukuje na przykład:

<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUA
AAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO
9TXL0Y4OHwAAAABJRU5ErkJggg==">

Wymaga rozszerzenia PHP fileinfo.

date (string format)

Zwraca datę w podanym formacie przy użyciu opcji funkcji PHP strftime lub date. Filtr pobiera datę jako timestamp UNIX, łańcuch znaków lub obiekt typu DateTime.

{$today|date:'%d.%m.%Y'}
{$today|date:'j. n. Y'}

escapeUrl

Ucieka od zmiennej, która ma być użyta jako parametr w URL.

<a href="http://example.com/{$name|escapeUrl}">{$name}</a>

Zobacz również zapytanie.

explode (string separator = '')

Rozdziela łańcuch przez podany delimiter i zwraca tablicę łańcuchów. Alias dla split.

{='one,two,three'|explode:','}    {* returns ['one', 'two', 'three'] *}

Jeśli delimiterem jest pusty łańcuch (wartość domyślna), to wejście zostanie podzielone na pojedyncze znaki:

{='123'|explode}                  {* returns ['1', '2', '3'] *}

Możesz użyć także aliasu split:

{='1,2,3'|split:','}              {* returns ['1', '2', '3'] *}

Zobacz również implode.

first

Zwraca pierwszy element tablicy lub znak łańcucha:

{=[1, 2, 3, 4]|first}    {* outputs 1 *}
{='abcd'|first}          {* outputs 'a' *}

Zobacz także last, random.

floor (int precision = 0)

Zaokrągla liczbę do określonej dokładności.

{=3.5|floor}        {* outputs 3      *}
{=135.79|floor:1}   {* outputs 135.7  *}
{=135.79|floor:3}   {* outputs 135.79 *}

Zobacz także ceil, round.

firstUpper

Konwertuje pierwszą literę wartości na duże. Wymaga rozszerzenia PHP mbstring.

{='the latte'|firstUpper}  {* outputs 'The latte' *}

Zobacz także capitalize, lower, upper.

implode (string glue = '')

Zwraca łańcuch będący konkatenacją łańcuchów w tablicy. Alias dla join.

{=[1, 2, 3]|implode}      {* outputs '123' *}
{=[1, 2, 3]|implode:'|'}  {* outputs '1|2|3' *}

Możesz również użyć aliasu join:

{=[1, 2, 3]|join}         {* outputs '123' *}

indent (int level = 1, string char = "\t")

Wcina tekst od lewej strony o określoną liczbę tabulatorów lub innych znaków, które podajemy w drugim opcjonalnym argumencie. Puste linie nie są wcięte.

<div>
{block |indent}
<p>Hello</p>
{/block}
</div>

Drukuje:

<div>
	<p>Hello</p>
</div>

last

Zwraca ostatni element tablicy lub znak łańcucha:

{=[1, 2, 3, 4]|last}    {* outputs 4 *}
{='abcd'|last}          {* outputs 'd' *}

Zobacz także first, random.

length

Zwraca długość łańcucha lub tablicy.

  • dla łańcuchów, zwróci długość w znakach UTF-8
  • dla tablic, zwróci liczbę elementów
  • dla obiektów implementujących interfejs Countable, użyje wartości zwracanej przez count()
  • dla obiektów implementujących interfejs IteratorAgregate, użyje wartości zwracanej przez iterator_count()
{if ($users|length) > 10}
	...
{/if}

lower

Konwertuje wartość na małe litery. Wymaga rozszerzenia PHP mbstring.

{='LATTE'|lower}   {* outputs 'latte' *}

Zobacz także capitalize, firstUpper, upper.

nocheck

Zapobiega automatycznej sanityzacji adresów URL. Latte automatycznie sprawdza, czy zmienna zawiera adres URL strony internetowej (tj. protokół HTTP/HTTPS) i zapobiega zapisywaniu linków, które mogą stanowić zagrożenie dla bezpieczeństwa.

Jeśli link używa innego schematu, takiego jak javascript: lub data:, i jesteś pewien jego zawartości, możesz wyłączyć sprawdzanie poprzez |nocheck.

{var $link = 'javascript:window.close()'}

<a href={$link}>checked</a>
<a href={$link|nocheck}>unchecked</a>

Wydruki:

<a href="">checked</a>
<a href="javascript:window.close()">unchecked</a>

Zobacz także checkUrl.

noescape

Wyłącza automatyczne uciekanie.

{var $trustedHtmlString = '<b>hello</b>'}
Escaped: {$trustedHtmlString}
Unescaped: {$trustedHtmlString|noescape}

Drukuje:

Escaped: &lt;b&gt;hello&lt;/b&gt;
Unescaped: <b>hello</b>

Niewłaściwe użycie filtra noescape może prowadzić do luki XSS! Nigdy nie używaj go, jeśli nie jesteś absolutnie pewien tego, co robisz i że drukowany ciąg pochodzi z zaufanego źródła.

number (int decimals = 0, string decPoint = '.', string thousandsSep = ',')

Formatuje liczbę do podanej liczby miejsc dziesiętnych. Można również określić znak kropki dziesiętnej i separatora tysięcy.

{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 = ' ')

Przekłada łańcuch o określonej długości z innym łańcuchem od lewej.

{='hello'|padLeft: 10, '123'}  {* outputs '12312hello' *}

padRight (int length, string pad = ' ')

Wyrównuje ciąg do pewnej długości z innym ciągiem od prawej.

{='hello'|padRight: 10, '123'}  {* outputs 'hello12312' *}

query

Dynamicznie generuje ciąg zapytania w adresie URL:

<a href="http://example.com/?{[name: 'John Doe', age: 43]|query}">click</a>
<a href="http://example.com/?search={$search|query}">search</a>

Drukuje:

<a href="http://example.com/?name=John+Doe&amp;age=43">click</a>
<a href="http://example.com/?search=Foo+Bar">search</a>

Klucze o wartości null są pomijane.

Zobacz również escapeUrl.

random

Zwraca losowy element tablicy lub znak łańcucha:

{=[1, 2, 3, 4]|random}    {* example output: 3 *}
{='abcd'|random}          {* example output: 'b' *}

Zobacz również first, last.

repeat (int count)

Powtarza łańcuch x razy.

{='hello'|repeat: 3}  {* outputs 'hellohellohello' *}

replace (string|array search, string replace = '')

Zastępuje wszystkie wystąpienia szukanego łańcucha łańcuchem zastępczym.

{='hello world'|replace: 'world', 'friend'}  {* outputs 'hello friend' *}

Można dokonać wielu zamian jednocześnie:

{='hello world'|replace: [h => l, l => h]}  {* outputs 'lehho worhd' *}

replaceRE (string pattern, string replace = '')

Zastępuje wszystkie wystąpienia zgodnie z wyrażeniem regularnym.

{='hello world'|replaceRE: '/l.*/', 'l'}  {* outputs 'hel' *}

reverse

Odwraca podany łańcuch lub tablicę.

{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)

Zaokrągla liczbę do określonej precyzji.

{=3.4|round}        {* outputs 3      *}
{=3.5|round}        {* outputs 4      *}
{=135.79|round:1}   {* outputs 135.8  *}
{=135.79|round:3}   {* outputs 135.79 *}

Zobacz także ceil, floor.

slice (int start, int length = null, bool preserveKeys = false)

Wyodrębnia fragment tablicy lub ciągu znaków.

{='hello'|slice: 1, 2}           {* outputs 'el' *}
{=['a', 'b', 'c']|slice: 1, 2}   {* outputs ['b', 'c'] *}

Filtr plasterkowy działa jak funkcja array_slice PHP dla tablic i mb_substr dla łańcuchów z możliwością powrotu do iconv_substr w trybie UTF-8.

Jeśli początek jest nieujemny, to sekwencja rozpocznie się od tego początku w zmiennej. Jeśli start jest ujemny, sekwencja rozpocznie się tak daleko od końca zmiennej.

Jeśli podana jest długość i jest ona dodatnia, to sekwencja będzie miała do tylu elementów. Jeśli zmienna jest krótsza niż długość, to w sekwencji znajdą się tylko dostępne elementy zmiennej. Jeśli podana jest długość i jest ona ujemna, to sekwencja zatrzyma się o tyle elementów od końca zmiennej. Jeśli jest pominięta, to sekwencja będzie miała wszystko od offsetu aż do końca zmiennej.

Filtr domyślnie zmieni kolejność i wyzeruje klucze tablicy liczb całkowitych. To zachowanie można zmienić ustawiając preserveKeys na true. Klucze łańcuchowe są zawsze zachowywane, niezależnie od tego parametru.

sort

Filtr, który sortuje tablicę i zachowuje asocjację indeksów.

{foreach ($names|sort) as $name}
	...
{/foreach}

Tablica posortowana w odwrotnej kolejności.

{foreach ($names|sort|reverse) as $name}
	...
{/foreach}

Możesz przekazać własną funkcję porównania jako parametr:

{var $sorted = ($names|sort: fn($a, $b) => $b <=> $a)}

spaceless

Usuwa niepotrzebne białe przestrzenie z wyjścia. Możesz również użyć aliasu strip.

{block |spaceless}
	<ul>
		<li>Hello</li>
	</ul>
{/block}

Drukuje:

<ul> <li>Hello</li> </ul>

stripHtml

Konwertuje HTML na zwykły tekst. To znaczy, usuwa znaczniki HTML i konwertuje encje HTML na tekst.

{='<p>one &lt; two</p>'|stripHtml}  {* outputs 'one < two' *}

Wynikowy zwykły tekst może naturalnie zawierać znaki reprezentujące znaczniki HTML, na przykład '&lt;p&gt;'|stripHtml jest konwertowany na <p>. Nigdy nie wyprowadzaj wynikowego tekstu za pomocą |noescape, ponieważ może to prowadzić do luki w zabezpieczeniach.

substr (int offset, int length = null)

Wyodrębnia fragment łańcucha. Ten filtr został zastąpiony przez filtr slice.

{$string|substr: 1, 2}

translate (string message, …args)

Tłumaczy wyrażenia na inne języki. Aby udostępnić ten filtr, musisz skonfigurować translator. Możesz również użyć tagów do tłumaczenia.

<a href="basket">{='Baskter'|translate}</a>
<span>{$item|translate}</span>

trim (string charlist = " \t\n\r\0\x0B\u{A0}")

Strip leading and trailing characters, by default whitespace.

{='  I like Latte.  '|trim}    {* outputs 'I like Latte.' *}
{='  I like Latte.'|trim: '.'} {* outputs '  I like Latte' *}

truncate (int length, string append = '…')

Skraca łańcuch do maksymalnej podanej długości, ale stara się zachować całe słowa. Jeśli łańcuch jest obcięty, dodaje na końcu elipsę (można to zmienić drugim parametrem).

{var $title = 'Hello, how are you?'}
{$title|truncate:5}  {* Hell…                *}
{$title|truncate:17} {* Hello, how are…      *}
{$title|truncate:30} {* Hello, how are you?  *}

upper

Konwertuje wartość na duże litery. Wymaga rozszerzenia PHP mbstring.

{='latte'|upper}  {* outputs 'LATTE' *}

Zobacz także capitalize, firstUpper, lower.

webalize

Konwertuje na ASCII.

Zamienia spacje na myślniki. Usuwa znaki, które nie są alfanumeryczne, podkreślenia lub myślniki. Konwertuje na małe litery. Usuwa również wiodącą i końcową białą przestrzeń.

{var $s = 'Our 10. product'}
{$s|webalize}    {* outputs 'our-10-product' *}

Wymaga pakietu nette/utils.