Php CActiveForm ajax验证中的模糊性

Php CActiveForm ajax验证中的模糊性,php,yii,Php,Yii,在CActiveForm的示例中: 要响应AJAX验证请求,我们需要以下类代码: public function actionCreate() { $model=new User; $this->performAjaxValidation($model); if(isset($_POST['User'])) { $model->attributes=$_POST['User']; if($model->save()

在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();
    }
}
我的问题:这段代码是怎么说的:
$\u POST['ajax']==='user-form'
?我把它改成了
$\u POST['ajax']=='xxxzzz'
,但这个脚本确实有效!有必要吗


编辑 我的代码错了。

if(isset($\u POST['ajax'])和&$\u 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
.
.
.
    }

$\u POST['ajax']保存提交供ajax验证的表单的id。从中得到你想要的

正如您在
CActiveForm::validate()
的文档中所看到的,它从POST数据加载模型,并且从来没有使用过$\u POST['ajax'],因此,如果您愿意,您可能可以删除它


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

我想知道为什么
if(isset($\u POST['ajax'])和&$\u POST['ajax']==='xxx-zzz')
的计算结果为true?我们没有带有
xxx zzz
id的表单!我的上述知识是错误的,在编辑中描述。@msoa问题现在解决了还是怎么了?我什么都不懂。是的,解决了,在问题编辑中描述。在同一代码块中,我有执行验证的代码片段。