在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
.
.
.
}
标题>$_POST['ajax']保存提交给ajax验证的表单的id。你想要什么就拿什么。
在CActiveForm::validate()
的文档中,它从POST-data加载模型,并且从未使用过$_POST['ajax'],因此如果您想删除它,您可能会删除它。