Class yii\validators\Validator

继承yii\validators\Validator » yii\base\Component » yii\base\BaseObject
实现yii\base\Configurable
子类yii\captcha\CaptchaValidator, yii\validators\BooleanValidator, yii\validators\CompareValidator, yii\validators\DateValidator, yii\validators\DefaultValueValidator, yii\validators\EachValidator, yii\validators\EmailValidator, yii\validators\ExistValidator, yii\validators\FileValidator, yii\validators\FilterValidator, yii\validators\ImageValidator, yii\validators\InlineValidator, yii\validators\IpValidator, yii\validators\NumberValidator, yii\validators\RangeValidator, yii\validators\RegularExpressionValidator, yii\validators\RequiredValidator, yii\validators\SafeValidator, yii\validators\StringValidator, yii\validators\UniqueValidator, yii\validators\UrlValidator
可用自版本2.0
源代码 https://github.com/yiisoft/yii2/blob/master/framework/validators/Validator.php

公共属性

隐藏继承的属性

属性类型描述定义在
$attributeNames array 属性名称. 该属性是只读的. yii\validators\Validator
$attributes array|string 要由此验证器验证的属性. yii\validators\Validator
$behaviors yii\base\Behavior[] 附加到此组件的行为列表. 该属性是只读的. yii\base\Component
$builtInValidators array 内置验证器列表(键值对(name => class)或配置). yii\validators\Validator
$enableClientValidation boolean 是否为此验证器启用客户端验证. yii\validators\Validator
$except array|string 验证器不应该应用的场景. yii\validators\Validator
$isEmpty callable PHP 回调函数, 它取代 isEmpty() 的默认实现. yii\validators\Validator
$message string 用户定义的错误消息. yii\validators\Validator
$on array|string 验证器可以应用的场景. yii\validators\Validator
$skipOnEmpty boolean 如果属性值为null或空字符串, 是否应跳过此验证规则. yii\validators\Validator
$skipOnError boolean 如果验证的属性已根据某些先前的规则已经存在某些验证错误, 是否应跳过此验证规则. yii\validators\Validator
$validationAttributes array 属性名称列表. 该属性是只读的. yii\validators\Validator
$when callable PHP 回调函数, 其返回值确定是否应该应用此验证器. yii\validators\Validator
$whenClient string 一个 JavaScript 函数名, 其返回值决定是否应在客户端应用此验证器. yii\validators\Validator

公共方法

隐藏继承的方法

方法描述定义在
__call() 调用不是类方法的指定的方法. yii\base\Component
__clone() 在通过克隆现有对象创建对象之后调用此方法. yii\base\Component
__construct() 构造函数. yii\base\BaseObject
__get() 返回组件属性的值. yii\base\Component
__isset() 检查属性是否已设置, 即已定义且不为null. yii\base\Component
__set() 设置组件属性的值. yii\base\Component
__unset() 将组件属性设置为null. yii\base\Component
addError() 将有关指定属性的错误添加到模型对象. yii\validators\Validator
attachBehavior() 将行为附加到此组件. yii\base\Component
attachBehaviors() 将行为列表附加到组件. yii\base\Component
behaviors() 返回此组件应该具有的行为列表. yii\base\Component
canGetProperty() 返回一个值, 指示属性是否可读取. yii\base\Component
canSetProperty() 返回一个值, 指示属性是否可设置. yii\base\Component
className() 返回此类的完全限定名称. yii\base\BaseObject
clientValidateAttribute() 返回执行客户端验证所需的 JavaScript. yii\validators\Validator
createValidator() 创建一个验证器对象. yii\validators\Validator
detachBehavior() 从组件中分离一个行为. yii\base\Component
detachBehaviors() 分离组件中的所有行为. yii\base\Component
ensureBehaviors() 确保在 behaviors() 中声明的行为已附加到此组件. yii\base\Component
getAttributeNames() 返回清理后的属性名称, 开头不带!字符. yii\validators\Validator
getBehavior() 返回指定的行为对象. yii\base\Component
getBehaviors() 返回附加到此组件的所有行为. yii\base\Component
getClientOptions() 返回客户端验证选项. yii\validators\Validator
getValidationAttributes() 返回此验证器适用的属性列表. yii\validators\Validator
hasEventHandlers() 返回一个值, 指示是否有任何处理程序附加到指定的事件. yii\base\Component
hasMethod() 返回一个值, 指示方法是否已定义. yii\base\Component
hasProperty() 返回一个值, 指示属性是否已定义. yii\base\Component
init() 初始化对象. yii\validators\Validator
isActive() 返回一个值, 该值指示验证器对于给定场景和属性是否处于活动状态. yii\validators\Validator
isEmpty() 检查给定值是否为空. yii\validators\Validator
off() 从该组件分离现有的事件处理程序. yii\base\Component
on() 将事件处理程序附加到事件. yii\base\Component
trigger() 触发事件. yii\base\Component
validate() 验证给定的值. yii\validators\Validator
validateAttribute() 验证单个属性. yii\validators\Validator
validateAttributes() 验证指定的对象. yii\validators\Validator

受保护的方法

隐藏继承的方法

方法描述定义在
formatMessage() 使用 I18N 格式化消息, 或者当\Yii::$app不可用时使用简单的strtr函数. yii\validators\Validator
validateValue() 验证一个值. yii\validators\Validator

属性详情

$attributeNames public 属性

属性名称. 该属性是只读的.

public array $attributeNames null
$attributes public 属性

要由此验证器验证的属性.

对于多个属性, 请将它们指定为一个数组; 对于单个属性, 你可以使用字符串或数组.

public array|string $attributes = []
$builtInValidators public static 属性

内置验证器列表(键值对(name => class)或配置).

public static array $builtInValidators = ['boolean' => 'yii\validators\BooleanValidator''captcha' => 'yii\captcha\CaptchaValidator''compare' => 'yii\validators\CompareValidator''date' => 'yii\validators\DateValidator''datetime' => ['class' => 'yii\validators\DateValidator''type' => \yii\validators\DateValidator::TYPE_DATETIME], 'time' => ['class' => 'yii\validators\DateValidator''type' => \yii\validators\DateValidator::TYPE_TIME], 'default' => 'yii\validators\DefaultValueValidator''double' => 'yii\validators\NumberValidator''each' => 'yii\validators\EachValidator''email' => 'yii\validators\EmailValidator''exist' => 'yii\validators\ExistValidator''file' => 'yii\validators\FileValidator''filter' => 'yii\validators\FilterValidator''image' => 'yii\validators\ImageValidator''in' => 'yii\validators\RangeValidator''integer' => ['class' => 'yii\validators\NumberValidator''integerOnly' => true], 'match' => 'yii\validators\RegularExpressionValidator''number' => 'yii\validators\NumberValidator''required' => 'yii\validators\RequiredValidator''safe' => 'yii\validators\SafeValidator''string' => 'yii\validators\StringValidator''trim' => ['class' => 'yii\validators\FilterValidator''filter' => 'trim''skipOnArray' => true], 'unique' => 'yii\validators\UniqueValidator''url' => 'yii\validators\UrlValidator''ip' => 'yii\validators\IpValidator']
$enableClientValidation public 属性

是否为此验证器启用客户端验证.

实际的客户端验证是通过 clientValidateAttribute() 返回的 JavaScript 代码完成的. 如果该方法返回null, 即使该属性为true, 此验证器也不会执行客户端验证.

$except public 属性

验证器不应该应用的场景.

对于多个场景, 请将它们指定为数组; 对于单个场景, 你可以使用字符串或数组.

public array|string $except = []
$isEmpty public 属性

PHP 回调函数, 它取代 isEmpty() 的默认实现.

如果未设置, 将使用 isEmpty() 检查值是否为空.

回调函数的签名应该是function ($value), 它返回一个指示该值是否为空的布尔值.

public callable $isEmpty null
$message public 属性

用户定义的错误消息.

它可能包含以下占位符, 这些占位符将由验证器进行相应的替换:

  • {attribute}: 被验证的属性的标签.
  • {value}: 要验证的属性的值.

Note: 某些验证器可能会为未满足特定验证条件时使用的错误消息引入其它属性. 有关这些属性的详细信息, 请参阅各个类 API 文档. 按照惯例, 该属性表示在不满足最重要的验证条件时使用的主要错误信息.

public string $message null
$on public 属性

验证器可以应用的场景.

对于多个场景, 请将它们指定为数组; 对于单个场景, 你可以使用字符串或数组.

public array|string $on = []
$skipOnEmpty public 属性

如果属性值为null或空字符串, 是否应跳过此验证规则. 仅在验证 yii\base\Model 时使用此属性.

public boolean $skipOnEmpty true
$skipOnError public 属性

如果验证的属性已根据某些先前的规则已经存在某些验证错误, 是否应跳过此验证规则. 默认为true.

public boolean $skipOnError true
$validationAttributes public 属性

属性名称列表. 该属性是只读的.

$when public 属性

PHP 回调函数, 其返回值确定是否应该应用此验证器.

回调函数的签名应该是function ($model, $attribute), 其中$model$attribute指的是模型和当前正在验证的属性. 回调应该返回一个布尔值.

该属性主要用于支持服务器端的条件验证. 如果未设置此属性, 则始终在服务器端应用此验证器.

以下示例仅在当前选择的国家/地区为美国(USA)时才会启用验证器:

function ($model) {
    return $model->country == Country::USA;
}

参见 $whenClient.

public callable $when null
$whenClient public 属性

一个 JavaScript 函数名, 其返回值决定是否应在客户端应用此验证器.

函数的签名应该是function (attribute, value), 其中attribute是描述被验证属性的对象(参阅 clientValidateAttribute()), value是属性的当前值.

该属性主要用于支持客户端的条件验证. 如果未设置此属性, 则始终在客户端应用此验证器.

以下示例仅在当前选择的国家/地区是美国(USA)时才会启用验证器:

function (attribute, value) {
    return $('#country').val() === 'USA';
}

参见 $when.

public string $whenClient null

方法详情

addError() public 方法

将有关指定属性的错误添加到模型对象.

这是执行消息选择和国际化的辅助方法.

public void addError ( $model, $attribute, $message, $params = [] )
$model yii\base\Model

正在验证的数据模型.

$attribute string

被验证的属性.

$message string

错误消息.

$params array

错误消息中占位符的值.

clientValidateAttribute() public 方法

返回执行客户端验证所需的 JavaScript.

调用 getClientOptions() 为客户端验证生成选项数组.

如果验证器可以支持客户端验证, 则可以重写此方法以返回 JavaScript 验证代码.

以下 JavaScript 变量是预定义的, 可以在验证代码中使用:

  • attribute: 描述正在验证的属性的对象;
  • value: 正在验证的值;
  • messages: 用于保存属性的验证错误消息的数组;
  • deferred: 用于保存延迟对象以进行异步验证的数组;
  • $form: 包含表单元素的 jQuery 对象.

attribute对象包含以下属性:

  • id: 在表单中标识该属性的唯一 ID(eg. loginform-username);
  • name: 属性名称或表达式(eg. [0]content为表格输入);
  • container: 输入字段容器的 jQuery 选择器;
  • input: 输入字段在表单上下文中的 jQuery 选择器;
  • error: 错误标签在容器上下文中的 jQuery 选择器;
  • status: 输入字段的状态, 0:空, 未输入前; 1:已验证; 2:待处理验证; 3:验证中.

参见:

public string|null clientValidateAttribute ( $model, $attribute, $view )
$model yii\base\Model

正在验证的数据模型.

$attribute string

要验证的属性的名称.

$view yii\web\View

应用此验证器将用于渲染视图或查看包含模型表单的文件的视图对象.

return string|null

客户端验证脚本. 如果验证器不支持客户端验证, 则为null.

createValidator() public static 方法

创建一个验证器对象.

public static yii\validators\Validator createValidator ( $type, $model, $attributes, $params = [] )
$type string|Closure

验证器类型. 这可以是:

  • $builtInValidators 中列出的内置验证器名称;
  • 模型类的方法名称;
  • 匿名函数;
  • 验证器类名称.
$model yii\base\Model

要验证的数据模型.

$attributes array|string

要验证的属性列表. 这可以是属性名称的数组, 也可以是逗号分隔的属性名称的字符串.

$params array

要应用于验证器属性的初始值.

return yii\validators\Validator

验证器.

formatMessage() protected 方法 (可用自版本: 2.0.12)

使用 I18N 格式化消息, 或者当\Yii::$app不可用时使用简单的strtr函数.

protected string formatMessage ( $message, $params )
$message string
$params array
getAttributeNames() public 方法 (可用自版本: 2.0.12)

返回清理后的属性名称, 开头不带!字符.

public array getAttributeNames ( )
return array

属性名称.

getClientOptions() public 方法 (可用自版本: 2.0.11)

返回客户端验证选项.

此方法通常从 clientValidateAttribute() 中调用. 你可以重写此方法来修改将传递给客户端验证的选项.

public array getClientOptions ( $model, $attribute )
$model yii\base\Model

正在验证的模型.

$attribute string

正在验证的属性名称.

return array

客户端验证选项.

getValidationAttributes() public 方法 (可用自版本: 2.0.16)

返回此验证器适用的属性列表.

public array getValidationAttributes ( $attributes null )
$attributes array|string|null

要验证的属性列表.

return array

属性名称列表.

init() public 方法

初始化对象.

在使用给定的配置初始化对象之后, 在构造函数的末尾调用此方法.

public void init ( )
isActive() public 方法

返回一个值, 该值指示验证器对于给定场景和属性是否处于活动状态.

如果验证器处于活动状态: 则验证器的on属性是空的, 或者验证器的on属性包含指定的场景.

public boolean isActive ( $scenario )
$scenario string

场景名称.

return boolean

验证器是否适用于指定的场景.

isEmpty() public 方法

检查给定值是否为空.

如果值为null, 空数组或空字符串, 则该值被视为空.

Note: 此方法与 PHP empty()不同. 当值为0时, 它将返回false.

public boolean isEmpty ( $value )
$value mixed

要检查的值.

return boolean

该值是否为空.

validate() public 方法

验证给定的值.

你可以使用此方法验证数据模型上下文中的值.

public boolean validate ( $value, &$error null )
$value mixed

要验证的数据值.

$error string

如果验证失败, 则返回错误消息.

return boolean

数据是否有效.

validateAttribute() public 方法

验证单个属性.

子类必须实现此方法才能提供实际的验证逻辑.

public void validateAttribute ( $model, $attribute )
$model yii\base\Model

要验证的数据模型.

$attribute string

要验证的属性的名称.

validateAttributes() public 方法

验证指定的对象.

public void validateAttributes ( $model, $attributes null )
$model yii\base\Model

正在验证的数据模型.

$attributes array|string|null

要验证的属性列表.

Note: 如果某个属性未与验证器关联, 则会忽略该属性. 如果此参数为null, 则将验证 $attributes 中列出的每个属性.

validateValue() protected 方法

验证一个值.

验证器类可以实现此方法以支持数据验模型的上下文中的数据验证.

protected array|null validateValue ( $value )
$value mixed

要验证的数据值.

return array|null

错误消息和要插入到错误消息中的参数数组.

if (!$valid) {
    return [$this->message, [
        'param1' => $this->param1,
        'formattedLimit' => Yii::$app->formatter->asShortSize($this->getSizeLimit()),
        'mimeTypes' => implode(', ', $this->mimeTypes),
        'param4' => 'etc...',
    ]];
}

return null;

对于这个例子, message模板可以包含{param1}, {formattedLimit}, {mimeTypes}, {param4}.

如果数据有效, 则应该返回null.

throws yii\base\NotSupportedException

如果验证器不支持没有模型的数据验证.