yii2 modal彈窗之ActiveForm ajax表單異步驗(yàn)證
前面我們講述了yii2中如何使用modal以及yii2 gridview列表內(nèi)更新操作如何使用modal的問(wèn)題,本以為modal要告一段落可以開(kāi)始新的話題了,但是實(shí)際問(wèn)題往往超乎想像,這不modal彈窗提交的表單說(shuō)是怎么驗(yàn)證的問(wèn)題又出來(lái)了,又出來(lái)了!
首先撇開(kāi)modal不談,我們就yii2 ActiveForm如何以Ajax的方式提交表單做一個(gè)簡(jiǎn)單的說(shuō)明,這也是我們今天主題的重點(diǎn),modal確實(shí)沒(méi)啥好說(shuō)了。后面若是有我再把話改回來(lái)。
yii2中,ActiveForm默認(rèn)做了客戶端驗(yàn)證,但是表單的提交,卻不是無(wú)刷新的。也就是常??吹降谋韱翁峤缓箜?yè)面會(huì)刷新。如果想要開(kāi)啟無(wú)刷新的模式,只需要在ActiveForm開(kāi)始開(kāi)啟enableAjaxValidation即可,像下面這樣
<?php $form = ActiveForm::begin([ 'id' => 'form-id', 'enableAjaxValidation' => true, ] ); ?>
注意哦,id和enableAjaxValidation一個(gè)都不能少。
接著看服務(wù)端的實(shí)現(xiàn)
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, ]);
如此一來(lái)就簡(jiǎn)單的實(shí)現(xiàn)了yii2異步無(wú)刷新提交表單了!
其實(shí)下面說(shuō)與不說(shuō)已經(jīng)不重要了,主要是寫(xiě)給一些懶人參考吧。聰明的人看了標(biāo)題就應(yīng)該明白了如何解決modal通過(guò)ActiveForm提交表單的問(wèn)題。
為了兼容modal,注意我們說(shuō)的是兼容而不是實(shí)現(xiàn),我們對(duì)程序稍稍做了些改動(dòng),僅做參考。
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 modal彈窗之ActiveForm ajax表單驗(yàn)證的相關(guān)知識(shí),希望對(duì)大家有所幫助,如果大家想了解更多內(nèi)容敬請(qǐng)關(guān)注腳本之家網(wǎng)站!
相關(guān)文章
Yii 框架應(yīng)用(Applications)操作實(shí)例詳解
這篇文章主要介紹了Yii 框架應(yīng)用(Applications)操作,結(jié)合實(shí)例形式詳細(xì)分析了Yii 框架應(yīng)用(Applications)基本配置、屬性、事件相關(guān)操作技巧與注意事項(xiàng),需要的朋友可以參考下2020-05-05DWZ+ThinkPHP開(kāi)發(fā)時(shí)遇到的問(wèn)題分析
這篇文章主要介紹了DWZ+ThinkPHP開(kāi)發(fā)時(shí)遇到的問(wèn)題,結(jié)合實(shí)例形式分析了DWZ+ThinkPHP在ajax調(diào)用中出現(xiàn)錯(cuò)誤問(wèn)題的解決方法,需要的朋友可以參考下2016-12-12Laravel 關(guān)聯(lián)模型-關(guān)聯(lián)新增和關(guān)聯(lián)更新的方法
今天小編就為大家分享一篇Laravel 關(guān)聯(lián)模型-關(guān)聯(lián)新增和關(guān)聯(lián)更新的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-10-10Symfony2框架創(chuàng)建項(xiàng)目與模板設(shè)置實(shí)例詳解
這篇文章主要介紹了Symfony2框架創(chuàng)建項(xiàng)目與模板設(shè)置的方法,結(jié)合實(shí)例形式詳細(xì)分析了Symfony2框架的具體步驟與詳細(xì)實(shí)現(xiàn)代碼,需要的朋友可以參考下2016-03-03thinkPHP5.1框架路由::get、post請(qǐng)求簡(jiǎn)單用法示例
這篇文章主要介紹了thinkPHP5.1框架路由::get、post請(qǐng)求簡(jiǎn)單用法,結(jié)合實(shí)例形式分析了thinkPHP5.1路由get、post請(qǐng)求基本使用方法,需要的朋友可以參考下2019-05-05PHP類中的魔術(shù)方法(Magic Method)簡(jiǎn)明總結(jié)
這篇文章主要介紹了PHP類中的魔術(shù)方法(Magic Method)簡(jiǎn)明總結(jié),這些方法包括__construct()、__destruct()、__call()、__callStatic()、__get()、__set()、__toString()等,需要的朋友可以參考下2014-07-07