我想在更新之前添加Ajax验证以检查表单。在视图中,添加到必填字段
['enableAjaxValidation' => true]
在actionUpdate的控制器中
if (Yii::$app->request->isAjax && $modelForm->load(Yii::$app->request->post())) {
Yii::$app->response->format = Response::FORMAT_JSON;
if ($modelForm->validate()) {
$model->setAttributes($modelForm->getAttributes());
if ($model->save()) {
return $this->redirect([my way]);
}
if ($model->hasErrors()) {
return ActiveForm::validate($model);
} else {
return ['success' => 1, 'html' =>
$this->renderPartial('view', [my data];
}
} else {
return ActiveForm::validate($modelForm);
}
}
问题是在字段中选择任何值,即" enableAjaxValidation" =>是的,立即导致模型的保存(即使不按下保存按钮)。如何避免这种情况?
答案 0 :(得分:1)
在控制器中尝试这样:
$model = new ExampleForm;
// validate any AJAX requests fired off by the form
if (Yii::$app->request->isAjax && $model->load(Yii::$app->request->post())) {
Yii::$app->response->format = Response::FORMAT_JSON;
return ActiveForm::validate($model);
}
在if
语句之前添加此内容,并从if语句中删除Yii::$app->request->isAjax
。
答案 1 :(得分:0)
在表单中添加以下内容
$form = ActiveForm::begin([
'id' => 'example',
'action' => ['your_action'],
'validateOnSubmit' => true,
'enableAjaxValidation' => true,
])