Фільтри для Latte
Фільтри – це функції, які змінюють або форматують дані до потрібної нам форми. Це короткий огляд вбудованих фільтрів, які доступні.
capitalize |
нижній регістр, перша буква кожного слова у верхньому регістрі |
firstUpper |
робить першу букву у верхньому регістрі |
lower |
робить рядок рядковим |
upper |
робить рядок у верхньому регістрі |
ceil |
округлює число в більший бік із заданою точністю |
floor |
округлює число в менший бік із заданою точністю |
round |
округлення числа до заданої точності |
escapeUrl |
екранує параметр в URL |
noescape |
друкує змінну без екранування |
query |
формує рядок запиту в URL |
Існують також фільтри екранування для HTML (escapeHtml
і
escapeHtmlComment
), XML (escapeXml
), JavaScript (escapeJs
), CSS (escapeCss
) і
iCalendar (escapeICal
), які Latte використовує сам завдяки контекстно-залежному екрануванню, і вам
не потрібно їх писати.
checkUrl |
Санує рядок для використання всередині атрибута href |
nocheck |
запобігає автоматичній санації URL |
Latte перевіряє атрибути src
і
href
автоматично, тому вам майже не
потрібно використовувати фільтр checkUrl
.
Всі вбудовані фільтри працюють з рядками в кодуванні UTF-8.
Використання
Latte дозволяє викликати фільтри, використовуючи нотацію знака труби (пробіл перед ним допускається):
Фільтри можуть бути з'єднані ланцюжком, тоді вони застосовуються в порядку зліва направо:
Параметри вказуються після назви фільтра через двокрапку або кому:
Фільтри можна застосовувати до виразу:
Таким чином можна зареєструвативласні фільтри:
Ми використовуємо його в такому шаблоні:
Фільтри
batch (int $length, mixed $item): array
Фільтр, який спрощує виведення лінійних даних у вигляді таблиці. Повертає масив із заданою кількістю елементів. Якщо ви вкажете другий параметр, він буде використаний для заповнення пропущених елементів в останньому рядку.
Виводить на друк:
Дивіться також тег group та iterateWhile.
breakLines
Вставляє розриви рядків HTML перед усіма новими рядками.
bytes (int $precision=2)
Форматує розмір у байтах у зручну для читання форму. Якщо задано локаль, використовуються відповідні десяткові та тисячні роздільники.
ceil (int $precision=0)
Округлює число до заданої точності.
capitalize
Повертає версію значення у вигляді заголовка. Слова починаються з
великих літер, всі інші символи – з малих. Потрібне розширення PHP
mbstring
.
Див. також firstUpper, lower, upper.
checkUrl
Застосовує санітарну обробку URL-адрес. Перевіряє, чи містить змінна веб-адресу (тобто протокол HTTP/HTTPS) і запобігає запису посилань, які можуть становити загрозу безпеці.
Виводить на друк:
Див. також nocheck.
clamp (int|float $min, int|float $max)
Повертає значення, обмежене діапазоном min та max.
Існує також у вигляді функції.
dataStream (string $mimetype=detect)
Перетворює вміст на схему URI даних. Його можна використовувати для вставки зображень в HTML або CSS без необхідності посилання на зовнішні файли.
Нехай у змінній є зображення $img = Image::fromFile('obrazek.gif')
, тоді
Виводить, наприклад:
Потрібне розширення PHP fileinfo
.
date (string $format)
Форматує дату і час відповідно до маски, що використовується
функцією PHP date. Фільтр приймає дату у форматі мітки
часу UNIX, як рядок або як об'єкт DateTimeInterface
.
Дивіться також localDate.
escapeUrl
Екранує змінну, яка буде використана як параметр в URL.
Див. також query.
explode (string
$separator=''
)
Розділяє рядок за заданим роздільником і повертає масив рядків.
Псевдонім для split
.
Якщо роздільник є порожнім рядком (значення за замовчуванням), вхідні дані буде розділено на окремі символи:
Ви також можете використовувати псевдонім split
:
Див. також implode.
first
Повертає перший елемент масиву або символ рядка:
floor (int $precision=0)
Округлює число до заданої точності.
firstUpper
Перетворює першу літеру значення у верхній регістр. Потрібне
розширення PHP mbstring
.
Див. також capitalize, lower регістр, upper регістр.
group (string|int|\Closure $by): array
Фільтр групує дані за різними критеріями.
У цьому прикладі рядки таблиці групуються за стовпцем categoryId
.
На виході отримуємо масив масивів, де ключем є значення у стовпчику
categoryId
. Прочитайте детальну інструкцію.
Дивіться також batch, функцію group та тег iterateWhile.
implode (string $glue=''
)
Повертає рядок, який є конкатенацією рядків у масиві. Псевдонім для
join
.
Ви також можете використовувати псевдонім join
:
indent (int $level=1, string
$char="\t"
)
Відступає текст зліва на задану кількість табуляцій або інших символів, які ми вказуємо у другому необов'язковому аргументі. Порожні рядки не відступаються.
Друкує:
last
Повертає останній елемент масиву або символ рядка:
length
Повертає довжину рядка або масиву.
- для рядків повертає довжину в символах UTF-8
- для масивів – кількість елементів
- для об'єктів, що реалізують інтерфейс Countable, буде використовувати значення, що повертається функцією count()
- для об'єктів, що реалізують інтерфейс IteratorAggregate, буде використовувати значення, що повертається функцією iterator_count()
localDate (?string $format=null, ?string $date=null, ?string $time=null)
Форматує дату і час відповідно до локалі,
забезпечуючи узгоджене і локалізоване відображення часових даних у
різних мовах і регіонах. Фільтр приймає дату у вигляді мітки часу UNIX,
рядка або об'єкта DateTimeInterface
.
Якщо ви використовуєте фільтр без жодних параметрів, він виведе дату в довгому форматі, як пояснюється далі.
a) Використання формату
Параметр format
описує, які компоненти часу слід відображати. Він
використовує літерні коди, де кількість повторень впливає на ширину
виводу:
Рік | y / yy / yyyy |
2024 / 24 / 2024 |
Місяць | M / MM / MMM / MMMM |
8 / 08 / сер / серпень |
День | d / dd / E / EEEE |
1 / 01 / нд / неділя |
Година | j / H / h |
бажана / 24-годинна / 12-годинна |
Хвилина | m / mm |
5 / 05 (2 цифри в поєднанні з секундами) |
Секунда | s / ss |
8 / 08 (2 цифри у поєднанні з хвилинами) |
Порядок кодів у форматі не має значення, оскільки порядок
компонентів буде відображено відповідно до умов локалізації. Таким
чином, формат не залежить від локалі. Наприклад, формат yyyyMMMMd
у
локалі en_US
виводить April 15, 2024
, тоді як у локалі cs_CZ
він виводить 15. dubna 2024
:
locale: | uk-UA | en_US |
---|---|---|
format: 'dMy' |
10.08.2024 | 8/10/2024 |
format: 'yM' |
08.2024 | 8/2024 |
format: 'yyyyMMMM' |
серпень 2024 р. | August 2024 |
format: 'MMMM' |
серпень | August |
format: 'jm' |
17:54 | 5:54 PM |
format: 'Hm' |
17:54 | 17:54 |
format: 'hm' |
5:54 пп | 5:54 PM |
b) Використання попередньо встановлених стилів
Параметри date
і time
визначають рівень деталізації
відображення дати і часу. Ви можете вибрати один з декількох рівнів:
full
, long
, medium
, short
. Ви можете відображати лише
дату, лише час або обидва:
locale: | uk-UA | en_US |
---|---|---|
date: short |
23.01.78 | 1/23/78 |
date: medium |
23 січ. 1978 р. | Jan 23, 1978 |
date: long |
23 січня 1978 р. | January 23, 1978 |
date: full |
понеділок, 23 січня 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 GMT+1 | 8:30:59 AM GMT+1 |
date: short, time: short |
23.01.78, 08:30 | 1/23/78, 8:30 AM |
date: medium, time: short |
23 січ. 1978 р., 08:30 | Jan 23, 1978, 8:30 AM |
date: long, time: short |
23 січня 1978 р. о 08:30 | January 23, 1978 at 8:30 AM |
Для дати можна також використовувати префікс relative-
(наприклад,
relative-short
), який для дат, близьких до теперішнього часу, покаже
yesterday
, today
або tomorrow
; в іншому випадку, він буде
відображатися стандартним чином.
Див. також дата.
lower
Перетворює значення в нижній регістр. Потрібне розширення PHP
mbstring
.
Див. також capitalize, firstUpper, upper.
nocheck
Запобігає автоматичній санітарній обробці URL-адрес. Latte автоматично перевіряє, чи містить змінна веб-адресу (тобто протокол HTTP/HTTPS) і запобігає запису посилань, які можуть становити загрозу безпеці.
Якщо посилання використовує іншу схему, наприклад, javascript:
або
data:
, і ви впевнені в його вмісті, ви можете відключити перевірку
через |nocheck
.
Відбитки:
Див. також checkUrl.
noescape
Вимикає автоматичне екранування.
Друкує:
Неправильне використання фільтра noescape
може
призвести до XSS-уразливості! Ніколи не використовуйте його, якщо ви не
впевнені в тому, що ви робите, і що рядок, який ви друкуєте, походить з
надійного джерела.
number (int $decimals=0, string
$decPoint='.'
, string $thousandsSep=','
)
Форматує число до вказаної кількості десяткових знаків. Якщо задано локаль, використовуються відповідні роздільники десяткових і тисячних знаків.
number (string $format)
Параметр format
дозволяє визначити зовнішній вигляд чисел точно
відповідно до ваших потреб. Для цього потрібна встановлена локаль. Формат складається з декількох спеціальних
символів, повний опис яких можна знайти в документації DecimalFormat:
- <c id=6/> обов'язкова цифра, завжди відображається, навіть якщо це нуль
#
необов'язкова цифра, відображається тільки якщо на цьому місці в числі є цифра@
значуща цифра, допомагає відобразити число з певною кількістю значущих цифр.
позначає, де повинен стояти десятковий роздільник (кома або крапка, залежно від локалі),
використовується для відокремлення груп цифр, зазвичай тисяч%
множить число на 100 і додає знак відсотків
Розглянемо кілька прикладів. У першому прикладі два знаки після коми є обов'язковими, у другому – необов'язковими. У третьому прикладі з обох боків додаються нулі, а в четвертому відображаються лише наявні цифри:
Значущі цифри визначають, скільки цифр, незалежно від десяткової крапки, слід відображати, округлюючи число, якщо це необхідно:
Простий спосіб відобразити число у відсотках. Число множиться на 100 і
додається знак %
:
Ми можемо визначити різний формат для додатних і від'ємних чисел,
розділених символом ;
. Таким чином, наприклад, додатні числа
можуть відображатися зі знаком +
:
Пам'ятайте, що фактичний вигляд чисел може відрізнятися залежно від налаштувань локалі. Наприклад, у деяких країнах замість крапки в якості десяткового роздільника використовується кома. Цей фільтр автоматично враховує це, тому вам не потрібно про це турбуватися.
padLeft (int $length, string
$pad=' '
)
Доповнює рядок до певної довжини іншим рядком зліва.
padRight (int $length, string
$pad=' '
)
Заміщає рядок до певної довжини іншим рядком праворуч.
query
Динамічно генерує рядок запиту в URL:
Друкує:
Ключі зі значенням null
пропущено.
Дивіться також escapeUrl.
random
Повертає випадковий елемент масиву або символ рядка:
repeat (int $count)
Повторює рядок x разів.
replace (string|array $search, string
$replace=''
)
Замінює всі входження пошукового рядка на рядок заміни.
Можна зробити кілька замін одночасно:
replaceRE (string $pattern, string
$replace=''
)
Замінює всі входження відповідно до регулярного виразу.
reverse
Реверсує заданий рядок або масив.
round (int $precision=0)
Округляє число до заданої точності.
slice (int $start, ?int $length=null, bool $preserveKeys=false)
Витягує фрагмент масиву або рядка.
Фільтр фрагментів працює як PHP-функція array_slice
для масивів і
mb_substr
для рядків з переходом на iconv_substr
в режимі UTF-8.
Якщо початок невід'ємний, послідовність почнеться з цього початку у змінній. Якщо start від'ємне, послідовність почнеться на відстані від кінця змінної.
Якщо задано довжину і вона додатна, то послідовність міститиме стільки елементів, скільки вказано у змінній. Якщо довжина змінної менша за довжину, то в послідовності будуть присутні лише доступні елементи змінної. Якщо задано від'ємне значення довжини, то послідовність зупиниться за стільки-то елементів від кінця змінної. Якщо довжину не вказано, то послідовність міститиме всі елементи від зсуву до кінця змінної.
За замовчуванням фільтр перевпорядковує і скидає ключі цілочисельних масивів. Цю поведінку можна змінити, встановивши preserveKeys у true. Рядкові ключі завжди зберігаються, незалежно від цього параметра.
sort (?Closure $comparison, string|int|\Closure|null $by=null, string|int|\Closure|bool $byKey=false)
Фільтр сортує елементи масиву або ітератора зі збереженням їхніх асоціативних ключів. Якщо задано локаль, сортування відбувається за її правилами, якщо не вказано власну функцію порівняння.
Масив відсортовано у зворотному порядку.
Ви можете вказати власну функцію порівняння для сортування (у прикладі показано, як змінити сортування від найбільшого до найменшого):
Фільтр |sort
також дозволяє сортувати елементи за ключем:
Якщо вам потрібно відсортувати таблицю за певним стовпцем, ви можете
використовувати параметр by
. Значення 'name'
у прикладі
вказує, що сортування буде виконано за $row->name
або
$row['name']
залежно від того, чи є $row
масивом або об'єктом:
Ви також можете визначити функцію зворотного виклику, яка визначає значення для сортування:
Параметр byKey
можна використовувати так само.
spaceless
Видаляє непотрібні пробіли з виводу. Також можна використовувати
псевдонім strip
.
Друкує:
stripHtml
Перетворює HTML на звичайний текст. Тобто видаляє HTML-теги і перетворює HTML-об'єкти на текст.
Отриманий в результаті звичайний текст може містити символи, які
представляють теги HTML, наприклад, '<p>'|stripHtml
буде
перетворено на <p>
. Ніколи не виводьте отриманий текст у
вигляді |noescape
, оскільки це може призвести до уразливості.
substr (int $offset, ?int $length=null)
Витягує фрагмент рядка. Цей фільтр було замінено на фільтр фрагментів.
translate (…$args)
Перекладає вирази на інші мови. Щоб зробити фільтр доступним, вам потрібно налаштувати перекладач. Ви також можете використовувати теги для перекладу.
trim (string
$charlist=" \t\n\r\0\x0B\u{A0}"
)
Видаляти початкові та кінцеві символи, за замовчуванням пробіли.
truncate (int $length, string
$append='…'
)
Скорочує рядок до максимально заданої довжини, але намагається зберегти цілі слова. Якщо рядок укорочено, додає в кінці багатокрапку (це можна змінити за допомогою другого параметра).
upper
Перетворює значення у верхній регістр. Потрібне розширення PHP
mbstring
.
Дивіться також capitalize, firstUpper, lower.
webalize
Перетворює в ASCII.
Перетворює пробіли на дефіси. Видаляє символи, які не є алфавітно-цифровими, підкресленнями або дефісами. Перетворює на малі літери. Також видаляє пробіли на початку та в кінці тексту.
Потрібен пакунок nette/utils.