Справочник фильтров

Полный перечень всех доступных фильтров в шаблонизаторе MNRFY с примерами использования

Как пользоваться справочником

Все фильтры применяются через символ | (pipe). Фильтры можно объединять в цепочки:

<!-- Базовое использование -->
{{ variable | filter }}

<!-- С параметрами -->
{{ variable | filter(param1, param2) }}

<!-- Цепочка фильтров -->
{{ variable | filter1 | filter2 | filter3 }}

Текстовые фильтры

Фильтр Описание Параметры Пример Результат
upper Преобразует в верхний регистр (с поддержкой UTF-8) - {{ "привет" | upper }} ПРИВЕТ
lower Преобразует в нижний регистр (с поддержкой UTF-8) - {{ "ПРИВЕТ" | lower }} привет
title Каждое слово с заглавной буквы - {{ "привет мир" | title }} Привет Мир
capitalize Первая буква заглавная - {{ "привет" | capitalize }} Привет
trim Удаляет пробелы в начале и конце - {{ " текст " | trim }} текст
truncate Обрезает строку до указанной длины length (100), suffix ('...') {{ text | truncate(50, '...') }} Первые 50 символов...
truncate_words Обрезает текст до указанного количества слов wordCount (100), suffix ('...') {{ text | truncate_words(10) }} Первые десять слов текста...
excerpt Создает выдержку из текста (удаляет HTML) length (50), suffix ('...') {{ html_content | excerpt(100) }} Текст без HTML тегов...
nl2br Преобразует переносы строк в <br> с экранированием - {{ "строка\nстрока" | nl2br }} строка<br>строка
escape Экранирует HTML символы - {{ "<script>" | escape }} &lt;script&gt;
strip_tags Удаляет HTML теги allowedTags ('') {{ "<p>text</p>" | strip_tags }} text
replace Заменяет подстроку search, replace {{ "Hello World" | replace("World", "MNRFY") }} Hello MNRFY
split Разбивает строку в массив separator (',') {{ "a,b,c" | split(',') }} ['a', 'b', 'c']
wordwrap Переносит длинные слова width (75), break ("\n"), cut (false) {{ long_text | wordwrap(50) }} Текст с переносами

Числовые фильтры

Фильтр Описание Параметры Пример Результат
number Форматирует число с разделителями decimals (0), decimalSep ('.'), thousandsSep (',') {{ 1234.567 | number(2) }} 1,234.57
money Форматирует как валюту currency ('$'), decimals (2), decimalSep ('.'), thousandsSep (',') {{ 1500 | money('₽', 0) }} ₽1,500
round Округляет число precision (0) {{ 3.14159 | round(2) }} 3.14
floor Округляет вниз - {{ 3.9 | floor }} 3
ceil Округляет вверх - {{ 3.1 | ceil }} 4
abs Абсолютное значение - {{ -42 | abs }} 42

Фильтры дат

Фильтр Описание Параметры Пример Результат
date Форматирует дату по PHP формату format ('Y-m-d') {{ timestamp | date('d.m.Y H:i') }} 15.01.2024 14:30

Фильтры массивов и коллекций

Фильтр Описание Параметры Пример Результат
length Длина массива/строки/объекта - {{ [1,2,3] | length }} 3
count Алиас для length - {{ items | count }} Количество элементов
size Алиас для length - {{ collection | size }} Размер коллекции
first Первый элемент массива или символ строки - {{ [1,2,3] | first }} 1
last Последний элемент массива или символ строки - {{ [1,2,3] | last }} 3
sort Базовая сортировка массива direction ('asc') {{ [3,1,2] | sort }} [1,2,3]
sort_by Сортировка по полю (поддерживает dot notation) field, direction ('asc') {{ users | sort_by('age', 'desc') }} Отсортированный массив
sort_keys Сортировка по ключам direction ('asc') {{ hash | sort_keys }} Массив с отсортированными ключами
reverse Обращает порядок элементов - {{ [1,2,3] | reverse }} [3,2,1]
unique Удаляет дубликаты - {{ [1,1,2,3] | unique }} [1,2,3]
slice Извлекает часть массива offset, length (null) {{ [1,2,3,4,5] | slice(1, 3) }} [2,3,4]
join Объединяет элементы в строку separator (', ') {{ ['a','b','c'] | join(' - ') }} a - b - c
keys Возвращает ключи массива/объекта - {{ {'a': 1, 'b': 2} | keys }} ['a', 'b']
values Возвращает значения массива/объекта - {{ {'a': 1, 'b': 2} | values }} [1, 2]
push Добавляет элемент в конец value {{ [1,2] | push(3) }} [1,2,3]
prepend Добавляет элемент в начало value {{ [2,3] | prepend(1) }} [1,2,3]
merge Объединяет два массива array2 {{ [1,2] | merge([3,4]) }} [1,2,3,4]
group_by Группирует элементы по полю field {{ users | group_by('role') }} {'admin': [...], 'user': [...]}
pluck Извлекает значения поля из массива объектов field {{ users | pluck('name') }} ['John', 'Jane', ...]
flip Меняет местами ключи и значения - {{ {'a': 1, 'b': 2} | flip }} {1: 'a', 2: 'b'}
to_array Преобразует объект в массив - {{ object | to_array }} Массив свойств объекта

Фильтры работы с объектами

Фильтр Описание Параметры Пример Результат
has_key Проверяет наличие ключа key {{ object | has_key('name') }} true/false
key_exists Алиас для has_key key {{ array | key_exists('id') }} true/false
get Получает значение по ключу с default key, default (null) {{ data | get('name', 'Anonymous') }} Значение или default
pick Выбирает указанные ключи ...keys {{ user | pick('id', 'name') }} {'id': 1, 'name': 'John'}
omit Исключает указанные ключи ...keys {{ user | omit('password') }} Объект без указанных ключей
keys_recursive Получает все ключи рекурсивно prefix ('') {{ nested | keys_recursive }} ['key1', 'key1.subkey', ...]

Служебные фильтры

Фильтр Описание Параметры Пример Результат
default Значение по умолчанию для пустых значений default ('') {{ null | default('Нет данных') }} Нет данных
default_if_null Значение по умолчанию только для null default ('') {{ '' | default_if_null('empty') }} '' (пустая строка)
default_if_empty Значение по умолчанию для пустых (но не null) default ('') {{ '' | default_if_empty('empty') }} empty
json Преобразует в JSON (без экранирования unicode) - {{ {'name': 'Иван'} | json }} {"name":"Иван"}
urlencode URL-кодирование строки - {{ "hello world" | urlencode }} hello%20world
urldecode URL-декодирование строки - {{ "hello%20world" | urldecode }} hello world
md5 MD5 хеш строки - {{ "password" | md5 }} 5f4dcc3b5aa765d61d8327deb882cf99
sha1 SHA1 хеш строки - {{ "password" | sha1 }} 5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8
sha256 SHA256 хеш строки - {{ "password" | sha256 }} 5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8

Специализированные фильтры

Фильтр Описание Параметры Пример
classes Генерирует CSS классы на основе условий -
<div class="{{ {
    'active': user.is_active,
    'premium': user.is_premium,
    'disabled': !user.enabled
} | classes }}">
format_bytes Форматирует размер файла precision (2) {{ 1048576 | format_bytes }} // 1 MB
pluralize Выбирает форму множественного числа singular, plural (null) {{ count | pluralize('item', 'items') }}

Примеры цепочек фильтров

Обработка пользовательского текста

{{ user_text | trim | truncate(100) | nl2br }}

Форматирование цены с НДС

{{ (product.price * 1.2) | round(2) | money('₽', 2, ',', ' ') }}

Обработка списка тегов

{{ tags | split(',') | unique | sort | slice(0, 5) | join(', ') }}

Создание URL из названия

{{ article.title | lower | replace(' ', '-') | urlencode }}

Условное применение фильтров

<!-- Применяем truncate только если текст длинный -->
{{ description | length > 100 ? (description | truncate(100)) : description }}

<!-- Форматируем как деньги только если это число -->
{{ value is numeric ? (value | money('$')) : value }}
Внимание: Фильтры url в шаблонизаторе не существует. Используйте urlencode или urldecode.
Совет: Фильтры выполняются слева направо. Учитывайте порядок применения при создании сложных цепочек. Например, сначала trim, потом truncate.