yii2使用Model无刷新验证rule自定义方法
2016-12-02 11:59
381 查看
先配置rule
在model里面写方法;
自定义的验证方法不支持客户端校验,也就是说鼠标失去焦点后不会自动校验,只有在表单提交后才会校验。所以下面就是解决这个问题的方法。
在form表单开头配置如下
控制器定义方法:
如此就实现了无刷新验证了。
有小伙伴遇到要验证的字段是unique类型,更新操作的时候,这可傻了眼了,怎么都处理不好了,我们下面给出一个针对字段unique规则更新操作的解决方案,但是同样兼容上面的案例说明。用下面的可能会好一点,万一你的字段也是unique的呢!
首先我们把ActiveForm的begin配置修改如下:
上面代码的意思很简单,如果是更新操作,请求验证的路由中把id也带过去,接着我们对validate-form方法也作相应的修改即可
原文地址:http://www.manks.top/yii2_custom_rules.html
/** * @inheritdoc */ public function rules() { return [ [["B"], "requiredByASpecial", 'skipOnEmpty' => false, 'skipOnError' => false], ]; }
在model里面写方法;
/** * 自定义验证B */ public function requiredByASpecial($attribute, $params) { if ($this->A== 1) { if ($this->$attribute=== "") $this->addError($attribute, "B的值不可以为空."); } }
自定义的验证方法不支持客户端校验,也就是说鼠标失去焦点后不会自动校验,只有在表单提交后才会校验。所以下面就是解决这个问题的方法。
在form表单开头配置如下
<?php $form = ActiveForm::begin([ 'id' => 'form-id', 'enableAjaxValidation' => true,//是否开启ajax修改,这里的validationUrl需要自己定义,否则会在失去焦点的时候就更改当前的值了! 'validationUrl' => Url::toRoute(['validate-form']), ] ); ?>
控制器定义方法:
public function actionValidateForm () { Yii::$app->response->format = \yii\web\Response::FORMAT_JSON; $model = new Model(); //这里要替换成自己的模型类 $model->load(Yii::$app->request->post()); return \yii\widgets\ActiveForm::validate($model); }
如此就实现了无刷新验证了。
有小伙伴遇到要验证的字段是unique类型,更新操作的时候,这可傻了眼了,怎么都处理不好了,我们下面给出一个针对字段unique规则更新操作的解决方案,但是同样兼容上面的案例说明。用下面的可能会好一点,万一你的字段也是unique的呢!
首先我们把ActiveForm的begin配置修改如下:
$validationUrl = ['validate-form']; if (!$model->isNewRecord) { $validationUrl['id'] = $model->id; } $form = ActiveForm::begin([ 'id' => 'document-nav-form', 'enableAjaxValidation' => true, 'validationUrl' => $validationUrl, ]);
上面代码的意思很简单,如果是更新操作,请求验证的路由中把id也带过去,接着我们对validate-form方法也作相应的修改即可
public function actionValidateForm ($id = null) { $model = $id === null ? new DocumentNav() : DocumentNav::findOne($id); $model->load(Yii::$app->request->post()); Yii::$app->response->format = \yii\web\Response::FORMAT_JSON; return \yii\widgets\ActiveForm::validate($model); }
原文地址:http://www.manks.top/yii2_custom_rules.html
相关文章推荐
- 使用jquery.validate自定义方法实现"手机号码或者固话至少填写一个"的逻辑验证
- Yii2里自定义函数的保存位置和使用方法
- thinkphp5.0自定义验证规则使用方法
- 用LinQ扩展方法,泛型扩展方法,实现自定义验证字符是否空、对象是否为null,及泛型约束使用,Action的使用
- jQuery.validator.addMethod自定义验证方法【在表单验证中的使用 $("#appEdit_Form").validate({rules : {},messages:{}】
- Yii2 Model的一些常用rules规则,使用Validator验证
- [Yii2]自定义注册功能时,使用自己的类替换user类,出现 table no found 解决方法
- 使用Django的ModelForm对表单进行自动验证(可自定义验证规则)
- 【一点经验分享】Yii2 - custom validator not work 自定义验证无效的解决方法
- MVC使用jQuery从视图向控制器传递Model,数据验证,MVC HTML辅助方法小结
- Yii2框架 model方法下setAttributes用法(自定义model 添加方法)
- vue中使用iview自定义验证关键词输入框问题及解决方法
- Asp.net自定义验证控件CustomValidator 的使用方法
- MVC使用jQuery从视图向控制器传递Model,数据验证,MVC HTML辅助方法小结
- MVC使用jQuery从视图向控制器传递Model,数据验证,MVC HTML辅助方法小结
- MVC使用jQuery从视图向控制器传递Model,数据验证,MVC HTML辅助方法小结
- 四【用django2.0来开发】后台会员管理(二) ModelForm表单的使用方法以及数据验证
- Vue使用vux-ui自定义表单验证遇到的问题及解决方法
- 如何使用thinkphp 5内置验证功能及自定义验证方法
- jquery.validationEngine 自定义验证的使用方法