码迷,mamicode.com
首页 > 其他好文 > 详细

yii2数据验证

时间:2017-07-31 22:13:49      阅读:230      评论:0      收藏:0      [点我收藏+]

标签:验证   script   validate   用户输入   javascrip   efi   显示   active   传参   

1. 客户端验证

yii根据ARrules()中的验证规则生成相应的Javascript验证代码。通过设置参数enableClientValidation的值来决定是否启用

客户端验证,默认为true,有以下3种方法来设置该参数的值。

1)在视图文件ActiveForm中对整个form进行设置:

<?php $form = ActiveForm::begin([

    ‘enableClientValidation‘ =>true

]); ?>

(2)在视图文件ActiveField中对单个field进行设置:

<?= $form->field($model, ‘username‘, [‘enableClientValidation‘=>false])->label(‘用户名‘) ?>

3)在AR类的rules()函数中设置:

[‘username‘, ‘yii\validators\StringValidator‘, ‘min‘ => 3, ‘max‘ => 30, ‘enableClientValidation‘ => true, ‘on‘ => ‘register‘]

优先级:(2>1>3

 

2. 服务器端验证

1$model->validate()

根据rules()中定义的验证规则对所有数据进行验证,验证通过返回true,否则返回false并在页面上显示错误信息。

2$model->save()

默认调用$model->validate(),验证通过则直接进行数据库操作,返回true,否则不进行数据库操作,返回false,将错误

信息存储在$model->errors中。若已调用$model->validate(),可以通过传参避免在save()方法中重复验证数据:$model->save(false)

 

3. Ajax验证

通过设置参数enableAjaxValidation的值来决定是否启用ajax验证,默认为false

客户端设置(两种方法):

1)在视图文件ActiveForm中对整个form进行设置:

<?php $form = ActiveForm::begin([

    ‘enableAjaxValidation‘ =>true

]); ?>

2)在视图文件ActiveField中对单个field进行设置:

<?= $form->field($model, ‘username‘, [‘enableAjaxValidation‘=>false])->label(‘用户名‘) ?>

服务器端处理:

if(Yii::$app->request->isAjax) {

        $res = \yii\bootstrap\ActiveForm::validate($model);

        Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;

        return $res;

}

 

注:有些规则无法使用客户端验证,如uniqueexist等。

 

rules()验证规则的错误信息中引用属性标签名以及用户输入的值:

[‘username‘, ‘unique‘, ‘on‘ => ‘register‘, ‘message‘ => ‘{attribute}"{value}"已被占用!‘]

{attribute}:属性标签名称;{value}:用户输入的值。

 

yii2数据验证

标签:验证   script   validate   用户输入   javascrip   efi   显示   active   传参   

原文地址:http://www.cnblogs.com/wujuntian/p/7265781.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!