Filtry do latte
Możemy używać funkcji w szablonach, aby pomóc w edycji lub przeformatowaniu danych do ostatecznej postaci. Nazywamy je filtrami.
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 |
ceil |
zaokrągla liczbę do podanej precyzji |
floor |
zaokrągla liczbę w dół do podanej precyzji |
round |
zaokrągla liczbę do podanej precyzji |
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ć.
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ą):
Filtry (w starszych wersjach pomocnicy) mogą być konkatenowane, a następnie stosowane w kolejności od lewej do prawej:
Parametry wprowadzane są po nazwie filtra, oddzielone dwukropkami lub przecinkami:
Filtry mogą być również stosowane do wyrażenia:
Filtry niestandardowe można zarejestrować w następujący sposób:
W szablonie jest on wówczas nazywany w następujący sposób:
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.
Wydruki:
Zobacz także tag group i iterateWhile.
breakLines
Wstawia podziały linii HTML przed wszystkimi liniami nowymi.
bytes (int $precision=2)
Formatuje rozmiar w bajtach do postaci czytelnej dla człowieka. Jeśli ustawione są ustawienia regionalne, używane są odpowiednie separatory dziesiętne i tysięczne.
ceil (int $precision=0)
Zaokrągla liczbę do określonej precyzji.
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
.
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.
Wydruki:
Zobacz również nocheck.
clamp (int|float $min, int|float $max)
Zwraca wartość zaciśniętą na inkluzywnym zakresie min i max.
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
Drukuje na przykład:
Wymaga rozszerzenia PHP fileinfo
.
date (string $format)
Formatuje datę i godzinę zgodnie z maską używaną przez funkcję PHP date. Filtr
akceptuje datę w formacie znacznika czasu UNIX, jako ciąg znaków lub jako obiekt DateTimeInterface
.
Zobacz także localDate.
escapeUrl
Ucieka od zmiennej, która ma być użyta jako parametr w URL.
Zobacz również zapytanie.
explode (string
$separator=''
)
Rozdziela łańcuch przez podany delimiter i zwraca tablicę łańcuchów. Alias dla split
.
Jeśli delimiterem jest pusty łańcuch (wartość domyślna), to wejście zostanie podzielone na pojedyncze znaki:
Możesz użyć także aliasu split
:
Zobacz również implode.
first
Zwraca pierwszy element tablicy lub znak łańcucha:
floor (int $precision=0)
Zaokrągla liczbę do określonej dokładności.
firstUpper
Konwertuje pierwszą literę wartości na duże. Wymaga rozszerzenia PHP mbstring
.
Zobacz także capitalize, lower, upper.
group (string|int|\Closure $by): array
Filtr grupuje dane według różnych kryteriów.
W tym przykładzie wiersze w tabeli są pogrupowane według kolumny categoryId
. Wynikiem jest tablica tablic, w
której kluczem jest wartość w kolumnie categoryId
. Przeczytaj szczegółowe
instrukcje.
Zobacz także batch, funkcję group i znacznik iterateWhile.
implode (string $glue=''
)
Zwraca łańcuch będący konkatenacją łańcuchów w tablicy. Alias dla join
.
Możesz również użyć aliasu join
:
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.
Drukuje:
last
Zwraca ostatni element tablicy lub znak łańcucha:
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()
localDate (?string $format=null, ?string $date=null, ?string $time=null)
Formatuje datę i godzinę zgodnie z ustawieniami regionalnymi, zapewniając spójne
i zlokalizowane wyświetlanie danych czasu w różnych językach i regionach. Filtr akceptuje datę jako znacznik czasu UNIX,
ciąg znaków lub obiekt DateTimeInterface
.
Jeśli użyjesz filtra bez żadnych parametrów, wyświetli on datę w długim formacie, jak wyjaśniono dalej.
a) Użycie formatu
Parametr format
opisuje, które składniki czasu powinny być wyświetlane. Używa kodów literowych, gdzie liczba
powtórzeń wpływa na szerokość wyjścia:
Rok | y / yy / yyyy |
2024 / 24 / 2024 |
Miesiąc | M / MM / MMM / MMMM |
8 / 08 / sie / sierpień |
Dzień | d / dd / E / EEEE |
1 / 01 / niedz. / niedziela |
Godzina | j / H / h |
preferowana / 24-godzinna / 12-godzinna |
Minuta | m / mm |
5 / 05 (2 cyfry w połączeniu z sekundami) |
Sekunda | s / ss |
8 / 08 (2 cyfry w połączeniu z minutami) |
Kolejność kodów w formacie nie ma znaczenia, ponieważ kolejność komponentów będzie wyświetlana zgodnie z konwencjami
regionalnymi. Dlatego format jest niezależny od ustawień regionalnych. Na przykład, format yyyyMMMMd
w locale
en_US
wyświetla April 15, 2024
, podczas gdy w locale cs_CZ
wyświetla
15. dubna 2024
:
locale: | pl-PL | en_US |
---|---|---|
format: 'dMy' |
10.08.2024 | 8/10/2024 |
format: 'yM' |
08.2024 | 8/2024 |
format: 'yyyyMMMM' |
sierpień 2024 | August 2024 |
format: 'MMMM' |
sierpień | August |
format: 'jm' |
17:54 | 5:54 PM |
format: 'Hm' |
17:54 | 17:54 |
format: 'hm' |
5:54 PM | 5:54 PM |
b) Korzystanie z gotowych stylów
Parametry date
i time
określają poziom szczegółowości wyświetlania daty i godziny. Można
wybrać jeden z kilku poziomów: full
, long
, medium
, short
. Można
wyświetlać tylko datę, tylko godzinę lub obie te wartości:
locale: | pl-PL | en_US |
---|---|---|
date: short |
23.01.1978 | 1/23/78 |
date: medium |
23 sty 1978 | Jan 23, 1978 |
date: long |
23 stycznia 1978 | January 23, 1978 |
date: full |
poniedziałek, 23 stycznia 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 CET | 8:30:59 AM GMT+1 |
date: short, time: short |
23.01.1978, 08:30 | 1/23/78, 8:30 AM |
date: medium, time: short |
23 sty 1978, 08:30 | Jan 23, 1978, 8:30 AM |
date: long, time: short |
23 stycznia 1978 08:30 | January 23, 1978 at 8:30 AM |
W przypadku daty można również użyć prefiksu relative-
(np. relative-short
), co w przypadku dat
bliskich teraźniejszości spowoduje wyświetlenie yesterday
, today
lub tomorrow
; w
przeciwnym razie zostanie wyświetlony w standardowy sposób.
Zobacz też data.
lower
Konwertuje wartość na małe litery. Wymaga rozszerzenia PHP mbstring
.
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
.
Wydruki:
Zobacz także checkUrl.
noescape
Wyłącza automatyczne uciekanie.
Drukuje:
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 określonej liczby miejsc dziesiętnych. Jeśli ustawione są ustawienia regionalne, używane są odpowiednie separatory dziesiętne i tysięczne.
number (string $format)
Parametr format
pozwala zdefiniować wygląd liczb dokładnie według własnych potrzeb. Wymaga ustawionych ustawień regionalnych. Format składa się z kilku znaków specjalnych, których pełny opis
można znaleźć w dokumentacji DecimalFormat:
- <c id=6/> cyfra obowiązkowa, wyświetlana zawsze, nawet jeśli jest zerem
#
cyfra opcjonalna, wyświetlana tylko wtedy, gdy liczba ma cyfrę w tym miejscu@
cyfra znacząca, pomaga wyświetlić liczbę z określoną liczbą cyfr znaczących.
oznacza miejsce, w którym powinien znajdować się separator dziesiętny (przecinek lub kropka, w zależności od ustawień regionalnych),
używany do oddzielania grup cyfr, zwykle tysięcy%
mnoży liczbę przez 100 i dodaje znak procentu
Przyjrzyjmy się kilku przykładom. W pierwszym przykładzie dwa miejsca po przecinku są obowiązkowe; w drugim są opcjonalne. Trzeci przykład pokazuje wypełnianie zerami po obu stronach, a czwarty wyświetla tylko istniejące cyfry:
Znaczące cyfry określają, ile cyfr, niezależnie od przecinka dziesiętnego, powinno być wyświetlanych, zaokrąglając liczbę w razie potrzeby:
Prosty sposób wyświetlania liczby jako procentu. Liczba jest mnożona przez 100 i dodawany jest znak %
:
Możemy zdefiniować inny format dla liczb dodatnich i ujemnych, oddzielonych znakiem ;
. W ten sposób, na
przykład, liczby dodatnie mogą być wyświetlane ze znakiem +
:
Należy pamiętać, że rzeczywisty wygląd liczb może się różnić w zależności od ustawień regionalnych. Na przykład w niektórych krajach przecinek jest używany zamiast kropki jako separator dziesiętny. Ten filtr automatycznie to uwzględnia, więc nie musisz się tym martwić.
padLeft (int $length, string
$pad=' '
)
Przekłada łańcuch o określonej długości z innym łańcuchem od lewej.
padRight (int $length, string
$pad=' '
)
Wyrównuje ciąg do pewnej długości z innym ciągiem od prawej.
query
Dynamicznie generuje ciąg zapytania w adresie URL:
Drukuje:
Klucze o wartości null
są pomijane.
Zobacz również escapeUrl.
random
Zwraca losowy element tablicy lub znak łańcucha:
repeat (int $count)
Powtarza łańcuch x razy.
replace (string|array $search, string
$replace=''
)
Zastępuje wszystkie wystąpienia szukanego łańcucha łańcuchem zastępczym.
Można dokonać wielu zamian jednocześnie:
replaceRE (string $pattern, string
$replace=''
)
Zastępuje wszystkie wystąpienia zgodnie z wyrażeniem regularnym.
reverse
Odwraca podany łańcuch lub tablicę.
round (int $precision=0)
Zaokrągla liczbę do określonej precyzji.
slice (int $start, ?int $length=null, bool $preserveKeys=false)
Wyodrębnia fragment tablicy lub ciągu znaków.
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 (?Closure $comparison, string|int|\Closure|null $by=null, string|int|\Closure|bool $byKey=false)
Filtr sortuje elementy tablicy lub iteratora, zachowując ich klucze asocjacyjne. Gdy ustawione są ustawienia regionalne, sortowanie odbywa się zgodnie z ich regułami, chyba że określono niestandardową funkcję porównania.
Tablica posortowana w odwrotnej kolejności.
Można określić niestandardową funkcję porównania do sortowania (przykład pokazuje, jak odwrócić sortowanie od największego do najmniejszego):
Filtr |sort
umożliwia również sortowanie elementów według klucza:
Jeśli chcesz posortować tabelę według określonej kolumny, możesz użyć parametru by
. Wartość
'name'
w przykładzie określa, że sortowanie zostanie wykonane według $row->name
lub
$row['name']
w zależności od tego, czy $row
jest tablicą czy obiektem:
Można również zdefiniować funkcję zwrotną, która określa wartość do sortowania:
Parametr byKey
może być używany w ten sam sposób.
spaceless
Usuwa niepotrzebne białe przestrzenie z wyjścia. Możesz również użyć aliasu strip
.
Drukuje:
stripHtml
Konwertuje HTML na zwykły tekst. To znaczy, usuwa znaczniki HTML i konwertuje encje HTML na tekst.
Wynikowy zwykły tekst może naturalnie zawierać znaki reprezentujące znaczniki HTML, na przykład
'<p>'|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.
translate (…$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.
trim (string
$charlist=" \t\n\r\0\x0B\u{A0}"
)
Strip leading and trailing characters, by default whitespace.
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).
upper
Konwertuje wartość na duże litery. Wymaga rozszerzenia PHP mbstring
.
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ń.
Wymaga pakietu nette/utils.