Экранирование html
Трейт экранирования html-тегов позволяет устанавливать правила поддерживаемых тегов и правила их замены на сущности.
Область видимости
Evas-Validate предполагает установку правил с разной областью видимости:
- Суперглобально - установка правил для всего проекта с помощью констант;
- Глобально - установка правил для всех классов;
- Локально - установка правил для класса.
Подробнее ознакомиться с локальной и глобальной установкой вы сможете ниже, а с константами здесь.
Локальная конфигурация
Свойства
| Имя | Тип | Описание |
|---|---|---|
| $allowableHtmlTagsMap | array | маппинг правил поддерживания html-тегов для конкретных полей |
| $htmlentitiesMap | array | маппинг правил замены на html-сущности для конкретных полей |
Локальная установка
allowableHtmlTags
Локально устанавливает поддерживаемые html-теги для strip_tags
| Аргумент | Тип | Описание |
|---|---|---|
| 1 | string|null | поддерживаемые html-теги или null для поддержки всех |
| 2 | array|null | поля к которым применить эти настройки |
$local->allowableHtmlTags('<p>', ['test', 'test1']);
htmlentities
Локально устанавливает/сбрасывает замену html-тегов на html-сущности
| Аргумент | Тип | Описание | По умолчанию |
|---|---|---|---|
| 1 | bool | использовать замену | false |
| 2 | array|null | поля к которым применить эти настройки |
$local->htmlentities(['test', 'test1']);
Глобальная конфигурация
Свойства
| Имя | Тип | Описание |
|---|---|---|
| $allowableHtmlTagsGlobalMap | array | глобальный маппинг правил поддерживания html-тегов для конкретных полей |
| $htmlentitiesGlobalMap | array | глобальный маппинг правил замены на html-сущности для конкретных полей |
Глобальная установка
allowableHtmlTagsGlobal
Глобально устанавливает поддерживаемые html-теги для strip_tags
| Аргумент | Тип | Описание |
|---|---|---|
| 1 | string|null | поддерживаемые html-теги или null для поддержки всех |
| 2 | array|null | поля к которым применить эти настройки |
$global->allowableHtmlTagsGlobal(null, ['test']);
htmlentitiesGlobal
Глобально устанавливает замену html-тегов на html-сущности
| Аргумент | Тип | Описание | По умолчанию |
|---|---|---|---|
| 1 | bool | использовать замену | false |
| 2 | array|null | поля к которым применить эти настройки |
$global->htmlentitiesGlobal(['test']);
Получение настроек
getAllowableHtmlTags
Получает общее правило поддерживаемых html-тегов для strip_tags
$html->getAllowableHtmlTags();
getHtmlentities
Получает общее правило экранирования htmlentities
$html->getHtmlentities();
getAllowableHtmlTagsMap
Получает маппинг правил поддерживаемых тегов strip_tags
$html->getAllowableHtmlTagsMap();
getHtmlentitiesMap
Получает маппинг правил htmlentities
$html->getHtmlentitiesMap();
Применение настроек
escapeHtml
Экранирует html-теги в значении
| Аргумент | Тип | Описание |
|---|---|---|
| 1 | mixed | значение |
| 2 | string|null | имя поля |
$html->escapeHtml();
escapeHtmlInValues
Экранирует html-теги в массиве или объекте
| Аргумент | Тип | Описание |
|---|---|---|
| 1 | array|object | значение |
$html->escapeHtmlInValues();
Наследование
Evas-Validate позволяет наследовать правила экранирования html, подробнее с методами для наследования вы можете ознакомиться ниже.
mergeMaps
Склеивает маппинги внешнего и вложенного объектов
| Аргумент | Тип | Описание |
|---|---|---|
| 1 | array | маппинг вложенного объекта |
| 2 | array | маппинг внешнего объекта |
$html->mergeMaps(['email' => 'test@test.com', 'password' => 'test'], ['name' => 'test', 'date' => '2021-07-29', 'id' = '22']);
inheritHtmlEscaping
Наследует параметры экранирования html во вложенный объект
| Аргумент | Тип | Описание |
|---|---|---|
| 1 | object | вложенный объект |
$html->inheritHtmlEscaping(new Field);
Пример:
// создаем валидатор поля
$fieldset = new Fieldset([
'filter' => new Fieldset([
'date' => new DateField,
'name' => new NameField,
]),
]);
// устанавливаем правило поддерживаемых html-тегов
$fieldset->allowableHtmlTags('<p>', ['name']);
// устанавливаем правило замены html-тегов на html-сущности
$fieldset->htmlentities(['name']);
$html = new NameField;
// наследуем параметры экранирования html
$html->inheritHtmlEscaping($fieldset, 'name');