在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
.
.
.
}
答案 0 :(得分:1)
$ _ POST ['ajax']保存为ajax验证提交的表单的id。从中得到你想要的东西。
正如您在CActiveForm::validate()
的文档中一样,它从POST数据中加载模型,并且从未使用$ _POST ['ajax'],因此如果您愿意,可以删除它。
确保你没有ajax验证你不打算验证的表格是好的。