0

在CActiveForm的API Doc示例中是:

要响应 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
.
.
.
    }
4

1 回答 1

1

$_POST['ajax'] 保存提交用于 ajax 验证的表单的 id。从中得到你想要的。

正如您在文档中CActiveForm::validate()从 POST 数据加载模型一样,并且 $_POST['ajax'] 从未使用过,因此您可以根据需要将其删除。

最好确保您不使用 ajax 验证您不打算验证的表单。

于 2013-04-20T19:37:50.610 回答