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方法中添加。
但这会导致无谓的请求提交,比较好的方式是为了用户体验在客户端也验证,而为了安全性,在服务器端和数据库也做验证和限制。
要启用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方法中添加。
相关文章推荐
- php namespace
- php设计模式 抽象工厂模式
- php设计模式 工厂模式
- PHP如何定义表关联 hasOne 与 belongsTo
- php设计模式 单例模式
- php设计模式 策略模式。
- php如何获取error log
- ThinkPHP问题收集:模板中使用U方法时无法嵌套大括号,For标签,插入数据,新增的表字段缓存问题
- php 异常获取
- php socket function
- php trait特性
- php匿名函数
- php 项目bug 快速定位
- php上传文件遇到的坑
- Laravel框架写的网站直接放在wampserver环境下路径错误问题
- php生成器
- php代码优化
- PHP自动登录
- 一个不错的php类库
- PHP里10个鲜为人知但却非常有用的函数