Php CActiveForm ajax验证中的模糊性
在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()
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问题现在解决了还是怎么了?我什么都不懂。是的,解决了,在问题编辑中描述。在同一代码块中,我有执行验证的代码片段。