zoukankan      html  css  js  c++  java
  • php的yii框架开发总结10

    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();
          }
      }
  • 相关阅读:
    JavaScript中的事件
    JavaScript中的String
    和Java相关的一些好文章(不定期更新)
    大端序小端序
    C语言中const的正确用法
    skynet源码分析之网络层——Lua层介绍
    skynet源码分析之网络层——底层介绍
    skynet源码分析之定时器skynet_timer.c
    skynet源码分析之lua层消息处理
    skynet源码分析之snlua服务的启动流程(二)
  • 原文地址:https://www.cnblogs.com/nannanITeye/p/3258976.html
Copyright © 2011-2022 走看看