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

使用Yii的CActiveForm默认使用服务器端模型(model)的rules规则验证数据。

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

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

 

[php] view plain copy
 
在CODE上查看代码片派生到我的代码片
  1. <?php $form=$this->beginWidget('CActiveForm', array(  
  2.     'enableClientValidation'=>true,   
  3.     'clientOptions'=>array(  
  4.             'validateOnSubmit'=>true,     //提交时的验证  
  5.             'validateOnChange'=>true,     //输入框值改变时的验证  
  6.             'validateOnType'=>false,      //键入时验证  
  7.             'afterValidate' => 'js:function(form, data, hasError){return exClientValidate();}'              
  8.         ),          
  9.     'htmlOptions'=>array('enctype'=>'multipart/form-data'),        
  10. )); ?>  


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

 

 

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

 

[php] view plain copy
 
在CODE上查看代码片派生到我的代码片
  1. public function rules() {  
  2. <span style="white-space:pre">  </span>......  
  3. <span style="white-space:pre">  </span>array('description','exServerValidate','on'=>'create,update'),  
  4. }  

在exServerValidate方法中添加。

posted @ 2016-04-21 11:29  假_行僧  阅读(740)  评论(0编辑  收藏  举报