您的位置:首页 > 编程语言 > PHP开发

Yii CActiveForm 客户端验证(enableClientValidation)和自定义验证

2016-04-21 11:29 381 查看
使用Yii的CActiveForm默认使用服务器端模型(model)的rules规则验证数据。

但这会导致无谓的请求提交,比较好的方式是为了用户体验在客户端也验证,而为了安全性,在服务器端和数据库也做验证和限制。

要启用CActiveForm的客户端验证,可以使用enableClientValidation参数:

[php] view plain copy







<?php $form=$this->beginWidget('CActiveForm', array(

'enableClientValidation'=>true,

'clientOptions'=>array(

'validateOnSubmit'=>true, //提交时的验证

'validateOnChange'=>true, //输入框值改变时的验证

'validateOnType'=>false, //键入时验证

'afterValidate' => 'js:function(form, data, hasError){return exClientValidate();}'

),

'htmlOptions'=>array('enctype'=>'multipart/form-data'),

)); ?>

如果界面中使用了自定义的组件,不能直接使用rules规则,那么可以在afterValidate中添加额外的验证代码,如上的exClientValidate(JS函数)。

另外在服务端数据验证时也可以自定义复杂的验证规则:

[php] view plain copy







public function rules() {

<span style="white-space:pre"> </span>......

<span style="white-space:pre"> </span>array('description','exServerValidate','on'=>'create,update'),

}

在exServerValidate方法中添加。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: