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();
        }
    }

     

posted @ 2013-08-15 09:49  楠楠IT  阅读(531)  评论(0编辑  收藏  举报