Yii2 验证器
1. 声明规则 rules
可以指定:核心验证器、行内验证器、独立验证器
public function rules()
{
return [
// name,email,subject 和 body 特性是 `require`(必填)的
[['name', 'email', 'subject', 'body'], 'required'],
// email 特性必须是一个有效的 email 地址
['email', 'email'],
];
}
1.1 自定义错误信息
['message' => '自定义错误信息']
1.2 条件式验证
['state', 'required', 'when' => function($model) {
return $model->country == 'USA';
}]
1.3 数据预处理
空输入
return [
// 若 "username" 和 "email" 为空,则设为 null
[['username', 'email'], 'default'],
// 若 "level" 为空,则设其为 1
['level', 'default', 'value' => 1],
];
2. 核心验证器
支持的内置核心验证器见: http://www.yiichina.com/doc/guide/2.0/tutorial-core-validators
3. 临时验证
对没有绑定任何模型类的值进行临时验证
3.1 方式1
$email = 'test@example.com';
$validator = new yii\validators\EmailValidator();
if ($validator->validate($email, $error)) {
echo '有效的 Email 地址。';
} else {
echo $error;
}
3.2 方式2
public function actionSearch($name, $email)
{
$model = new DynamicModel(compact('name', 'email'));
$model->addRule(['name', 'email'], 'string', ['max' => 128])
->addRule('email', 'email')
->validate();
if ($model->hasErrors()) {
// 验证失败
} else {
// 验证成功
}
}
4. 创建验证器
4.1 行内验证器
4.2 独立验证器
5. 捕获错误
//获取所有属性的第一个错误提示
$model->getFirstErrors()
//获取第一个错误提示
reset($model->getFirstErrors())