andrewdanilov/yii2-helpers

各种辅助工具

安装: 88

依赖: 4

建议者: 0

安全: 0

星标: 1

关注者: 2

分支: 0

开放问题: 0

类型:yii2-extension

1.0.22 2024-02-23 20:24 UTC

This package is auto-updated.

Last update: 2024-09-23 21:47:16 UTC


README

各种辅助工具

安装

安装此扩展的首选方法是通过 composer

运行以下命令之一

composer require andrewdanilov/yii2-helpers "~1.0.0"

或者将以下内容添加到您的 composer.json 文件的 require 部分中。

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

使用方法

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 规则将使用 htmlspecialchars() 函数将属性值中的所有 html 实体替换为其 &-等价物。

ModelHelper::getFirstError()

返回模型中发生的第一个错误,以字符串形式呈现,如果没有错误,则返回空字符串。

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