首頁  >  文章  >  後端開發  >  yii2 modal彈跳窗之ActiveForm實作ajax表單異步驗證

yii2 modal彈跳窗之ActiveForm實作ajax表單異步驗證

*文
*文原創
2018-01-02 11:07:471829瀏覽

本文主要介紹了yii2 modal彈跳窗之ActiveForm ajax表單驗證的相關資料,非常不錯具有參考借鑒價值,需要的朋友可以參考下。希望對大家有幫助。

我們就yii2 ActiveForm如何以Ajax的方式提交表單做一個簡單的說明,這也是我們今天主題的重點。

yii2中,ActiveForm預設做了客戶端驗證,但是表單的提交,卻不是無刷新的。也就是常常看到的表單提交後頁面會刷新。如果想要開啟無刷新的模式,只需要在ActiveForm開始開啟enableAjaxValidation即可,像下面這樣

<?php $form = ActiveForm::begin([
&#39;id&#39; => &#39;form-id&#39;,
&#39;enableAjaxValidation&#39; => 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([&#39;index&#39;]); 
}
}
}
return $this->render(&#39;create&#39;, [
&#39;model&#39; => $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 [&#39;success&#39; => true];
}
return $this->redirect([&#39;index&#39;]);
} 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(&#39;create&#39;, [
&#39;model&#39; => $model,
]);
} else {
return $this->render(&#39;create&#39;, [
&#39;model&#39; => $model,
]);
}

相關推薦:

Yii2中join、joinwith多重資料表關聯查詢的使用方法

Yii2實作QQ互聯登入

#Yii2實作rbac權限控制

#

以上是yii2 modal彈跳窗之ActiveForm實作ajax表單異步驗證的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn