andrewdanilov/yii2-helpers

Various helpers

Installs: 85

Dependents: 4

Suggesters: 0

Security: 0

Stars: 1

Watchers: 2

Forks: 0

Open Issues: 0

Type:yii2-extension

1.0.22 2024-02-23 20:24 UTC

This package is auto-updated.

Last update: 2024-04-23 21:00:48 UTC


README

Various helpers

Installation

The preferred way to install this extension is through composer.

Either run

composer require andrewdanilov/yii2-helpers "~1.0.0"

or add

"andrewdanilov/yii2-helpers": "~1.0.0"

to the require section of your composer.json file.

Usage

ModelHelper

ModelHelper::cleanLoadedValues()

Обрабатывает массив с загружаемыми в модель значениями атрибутов по заданным правилам. Правила очистки задаются для конкретных атрибутов в массиве $attribute_rules:

$attribute_rules = [
  'name' => [ModelHelper::ATTR_RULE_STRIP_TAGS],
  'text' => [ModelHelper::ATTR_RULE_CLEAN_JS, ModelHelper::ATTR_RULE_STRIP_TAGS],
  '<attribute>' => [<attr_rule1>, <attr_rule2>, <attr_rule3>, ...],
  '*' => [<attr_rule4>, ...], // для всех атрибутов, даже если для них уже применялось правило
  '?' => [<attr_rule5>, ...], // только для атрибутов, для которых не указано правило
];

Набор правил применяется, если значение элемента массива $values соответствующего атрибуту является строкой. Если значение - массив, то набор правил будет рекурсивно применен ко всем вложенным строковым значениям элементов массива, независимо от имен их ключей. Глубина вложенности неограничена.

Метод ModelHelper::cleanLoadedValues() можно применять в модели, например, переписав базовый метод \yii\base\Model::setAttributes() следующим образом:

public function setAttributes($values, $safeOnly = true)
{
    $values = ModelHelper::cleanLoadedValues($values, [
        'title' => [ModelHelper::ATTR_RULE_STRIP_TAGS],
        'text' => [ModelHelper::ATTR_RULE_CLEAN_JS],
    ]);
    parent::setAttributes($values, $safeOnly);
}

Правило ModelHelper::ATTR_RULE_CLEAN_JS удалит из значения атрибута все теги <script> как самозакрывающиеся, так и обычные, как содержащие скрипт в теле тега, так и в html-атрибуте src.

Правило ModelHelper::ATTR_RULE_STRIP_TAGS удалит из значения атрибута все html-теги, применив к нему функцию strip_tags.

Правило ModelHelper::ATTR_RULE_HTML_SPECIAL_CHARS заменит в значении атрибута все html сущности на их &-эквиваленты с помощью функции htmlspecialchars().

ModelHelper::getFirstError()

Возвращает первую ошибку, возникшую в модели в виде строки или пустую строку, если ошибок нет.

$model = new MyModel();
$model->some_attr = 'some_wrong_value';
$model->validate();
echo \andrewdanilov\helpers\ModelHelper::getFirstError($model);