1、CActiveForm是Chtml类的封装,但是它有数据验证的功能,有三种方式:服务器端、客户端、Ajax数据验证。

  • 服务器端验证:当整个表单页面被提交后,在服务器端 进行验证。如果存在任何验证错误,CActiveForm将把错误 信息显示在用户页面上。
  • 基于AJAX的验证:当用户在输入框中输入了数据, 需要在服务器端进行验证的输入框将触发一个AJAX验证。 验证结果通过AJAX response返回,输入框也根据返回结果 相应的改变它的显示行为。
  • 客户端验证: 当用户在输入框中输入数据, 验证动作将在客户端通过JavaScript执行。由于没有产生与服务器端的通讯,这种方式可以降低服务器的负荷。

    特点:服务器端的验证始终被执行,Ajax和客户端的数据验证可以设置:enableAjaxValidation和enableClientValidation设置true或false。

      基于AJAX的验证和客户端验证可以同时使用,也可以分开使用。例如,在用户注册表单中,可以使用基于AJAX的验证来检查用户是否选择了未重复的用户名,使用客户端验证来确保所有需要有内容的字段都被输入了内容。 因为基于AJAX的验证可能增加服务器的额外负荷,在可能的情况下我们应当尽可能地使用客户端验证。
      验证规则:CValidator基类。

    视图文件使用CActiveForm类

    <?php $form = $this->beginWidget('CActiveForm', array(
    'id'=>'user-form',
    'enableAjaxValidation'=>true,
    'enableClientValidation'=>true,
    'focus'=>array($model,'firstName'),
    )); ?> <?php echo $form->errorSummary($model); ?> <div class="row">
    <?php echo $form->labelEx($model,'firstName'); ?>
    <?php echo $form->textField($model,'firstName'); ?>
    <?php echo $form->error($model,'firstName'); ?>
    </div>
    <div class="row">
    <?php echo $form->labelEx($model,'lastName'); ?>
    <?php echo $form->textField($model,'lastName'); ?>
    <?php echo $form->error($model,'lastName'); ?>
    </div> <?php $this->endWidget(); ?>

    如何响应Ajax验证:

    public function actionCreate()
    {
    $model=new User;
    $this->performAjaxValidation($model);//这一句调用Ajax验证方法。
    if(isset($_POST['User']))
    {
    $model->attributes=$_POST['User'];
    if($model->save())
    $this->redirect('index');
    }
    $this->render('create',array('model'=>$model));
    } protected function performAjaxValidation($model)
    {
    if(isset($_POST['ajax']) && $_POST['ajax']==='user-form')
    {
    echo CActiveForm::validate($model);
    Yii::app()->end();
    }
    }

最新文章

  1. mysql 性能优化方案
  2. BZOJ2728: [HNOI2012]与非
  3. android使用默认程序进行图片拍照已经裁剪,以及设备读取
  4. 简单BigDecimal运算精度
  5. Windows桌面共享中一些常见的抓屏技术
  6. Unsupported major.minor version 51.0解决
  7. Java 获取距离最近一段时间的时间点
  8. [转载]maven基础入门
  9. spark-shell 执行脚本并传入参数
  10. xml约束之schema
  11. ajax调用handler,使用HttpWebRequest访问WCF服务
  12. 浅谈Kubernetes生产架构
  13. Linux虚拟机配置(新猿旺学习总结)
  14. luogu3811 乘法逆元
  15. Effective java第17条:要么为继承而设计,并提供文档说明,要么就禁止继承
  16. SVG的用法
  17. not in 的优化
  18. iOS.XcodeUsage
  19. jquery banner 轮播配置方法
  20. JS脚本动态给元素/控件添加事件

热门文章

  1. linux防火墙添加端口
  2. C语言抽象数据类型ADT
  3. P2903 [USACO08MAR]麻烦的干草打包机The Loathesome Hay Baler
  4. vue(6)生态
  5. c++判断两字符串是否相等
  6. java——快排、冒泡、希尔、归并
  7. linux 命令(Ubuntu)
  8. JS 获取get请求方式的参数
  9. Linux 进程间通信系列之 信号
  10. python 循环类型