本文主要介紹了yii2 modal彈跳窗之ActiveForm ajax表單驗證的相關資料,非常不錯具有參考借鑒價值,需要的朋友可以參考下。希望對大家有幫助。
我們就yii2 ActiveForm如何以Ajax的方式提交表單做一個簡單的說明,這也是我們今天主題的重點。
yii2中,ActiveForm預設做了客戶端驗證,但是表單的提交,卻不是無刷新的。也就是常常看到的表單提交後頁面會刷新。如果想要開啟無刷新的模式,只需要在ActiveForm開始開啟enableAjaxValidation即可,像下面這樣
<?php $form = ActiveForm::begin([ 'id' => 'form-id', 'enableAjaxValidation' => true, ] ); ?>
#哦,id和enableAjaxValidation一個都不能少。
接著看服務端的實作
if ($model->load(Yii::$app->request->post())) { Yii::$app->response->format = yii\web\Response::FORMAT_JSON; if ($errors = \yii\widgets\ActiveForm::validate($model)) { return $errors; } else { if($model->save(false)) { return $this->redirect(['index']); } } } return $this->render('create', [ 'model' => $model, ]);
如此一來就簡單的實作了yii2非同步無刷新提交表單了!
其實下面說與不說已經不重要了,主要是寫給一些懶人參考吧。聰明的人看了標題就應該明白如何解決modal透過ActiveForm提交表單的問題。
為了相容modal,注意我們說的是相容而不是實現,我們對程式稍稍做了些改動,僅做參考。
if ($model->load(Yii::$app->request->post())) { if ($model->save()) { if (Yii::$app->request->isAjax) { Yii::$app->response->format = \yii\web\Response::FORMAT_JSON; return ['success' => true]; } return $this->redirect(['index']); } else { if (Yii::$app->request->isAjax) { Yii::$app->response->format = \yii\web\Response::FORMAT_JSON; return \yii\widgets\ActiveForm::validate($model); } } } if (Yii::$app->request->isAjax) { return $this->renderAjax('create', [ 'model' => $model, ]); } else { return $this->render('create', [ 'model' => $model, ]); }
相關推薦:
Yii2中join、joinwith多重資料表關聯查詢的使用方法
#以上是yii2 modal彈跳窗之ActiveForm實作ajax表單異步驗證的詳細內容。更多資訊請關注PHP中文網其他相關文章!