CActiveForm ajax验证中的歧义

时间:2013-04-20 19:26:32

标签: php yii

API Doc CActiveForm示例中:

要响应AJAX验证请求,我们需要以下类代码:

public function actionCreate()
{
    $model=new User;
    $this->performAjaxValidation($model);
    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();
    }
}

我的问题:这段代码说的是什么:$_POST['ajax']==='user-form'?我将其更改为$_POST['ajax']==='xxxzzz',但脚本真的有效!这有必要吗?


修改

我的代码错了。

if(isset($_POST['ajax']) && $_POST['ajax']==='xxx-zzz')表达式真正起作用。仍在进行验证的原因是,在接下来的行中,我以这种方式进行了验证:

$model = new User;
$this->performAjaxValidation($model,'xxx-zzz'); //here don't perform Ajax validation
.
.
.
    if(!$validate){
    $this->performAjaxValidation($model,'user-form'); // here Ajax validation will performed
.
.
.
    }

1 个答案:

答案 0 :(得分:1)

$ _ POST ['ajax']保存为ajax验证提交的表单的id。从中得到你想要的东西。

正如您在CActiveForm::validate()的文档中一样,它从POST数据中加载模型,并且从未使用$ _POST ['ajax'],因此如果您愿意,可以删除它。

确保你没有ajax验证你不打算验证的表格是好的。