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();
          }
      }
  • 相关阅读:
    Redis常见数据类型
    MYSQL常见可优化场景
    算术切片
    找数组里没出现的数
    不同路径和(II)
    不同路径和
    最小路径和
    强盗抢房子
    丑数(2)
    判断子序列
  • 原文地址:https://www.cnblogs.com/nannanITeye/p/3258976.html
Copyright © 2011-2022 走看看