yii2 modal弹窗之ActiveForm ajax表单异步验证


Posted in PHP onJune 13, 2016

前面我们讲述了yii2中如何使用modal以及yii2 gridview列表内更新操作如何使用modal的问题,本以为modal要告一段落可以开始新的话题了,但是实际问题往往超乎想像,这不modal弹窗提交的表单说是怎么验证的问题又出来了,又出来了!

首先撇开modal不谈,我们就yii2 ActiveForm如何以Ajax的方式提交表单做一个简单的说明,这也是我们今天主题的重点,modal确实没啥好说了。后面若是有我再把话改回来。

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 modal弹窗之ActiveForm ajax表单验证的相关知识,希望对大家有所帮助,如果大家想了解更多内容敬请关注三水点靠木网站!

PHP 相关文章推荐
PHP+DBM的同学录程序(1)
Oct 09 PHP
php 获取远程网页内容的函数
Sep 08 PHP
PHP中文件读、写、删的操作(PHP中对文件和目录操作)
Mar 06 PHP
网页上facebook分享功能具体实现
Jan 26 PHP
apache中为php 设置虚拟目录
Dec 17 PHP
php实现检查文章是否被百度收录
Jan 27 PHP
Linux系统下使用XHProf和XHGui分析PHP运行性能
Dec 08 PHP
PHP getallheaders无法获取自定义头(headers)的问题
Mar 23 PHP
php调用自己java程序的方法详解
May 13 PHP
PHP实现腾讯与百度坐标转换
Aug 05 PHP
Yii2处理密码加密及验证的方法
May 12 PHP
PHP+MySql实现一个简单的留言板
Jul 19 PHP
Windows下PHP开发环境搭建教程(Apache+PHP+MySQL)
Jun 13 #PHP
PHPStorm+XDebug进行调试图文教程
Jun 13 #PHP
图文详解phpstorm配置Xdebug进行调试PHP教程
Jun 13 #PHP
PHP生成制作验证码的简单实例
Jun 12 #PHP
php gd等比例缩放压缩图片函数
Jun 12 #PHP
详解PHP中cookie和session的区别及cookie和session用法小结
Jun 12 #PHP
yii2中结合gridview如何使用modal弹窗实例代码详解
Jun 12 #PHP
You might like
从零开始学YII2框架(四)扩展插件yii2-kartikgii
2014/08/20 PHP
必须收藏的php实用代码片段
2016/02/02 PHP
PHP-FPM实现性能优化
2016/03/31 PHP
window.open()弹出居中的窗口
2007/02/01 Javascript
js innerHTML 的一些问题的解决方法
2008/06/22 Javascript
Node.js与PHP、Python的字符处理性能对比
2014/07/06 Javascript
jQuery实现鼠标划过展示大图的方法
2015/03/09 Javascript
jQuery实现的五子棋游戏实例
2015/06/13 Javascript
深入理解JavaScript编程中的原型概念
2015/06/25 Javascript
详解JS去重及字符串奇数位小写转大写
2016/12/29 Javascript
NodeJs安装npm包一直失败的解决方法
2017/04/28 NodeJs
基于vue.js的分页插件详解
2017/11/27 Javascript
对Angular中单向数据流的深入理解
2018/03/31 Javascript
详解es6新增数组方法简便了哪些操作
2019/05/09 Javascript
防止Layui form表单重复提交的实现方法
2019/09/10 Javascript
react-native聊天室|RN版聊天App仿微信实例|RN仿微信界面
2019/11/12 Javascript
解决vant title-active-color与title-inactive-color不生效问题
2020/11/03 Javascript
[42:20]Winstrike vs VGJ.S 2018国际邀请赛淘汰赛BO3 第二场 8.23
2018/08/24 DOTA
[00:58]PWL开团时刻DAY5——十人开雾0换5
2020/11/04 DOTA
python 网络编程常用代码段
2016/08/28 Python
Python中查看文件名和文件路径
2017/03/31 Python
python中使用zip函数出现错误的原因
2018/09/28 Python
对python 多线程中的守护线程与join的用法详解
2019/02/18 Python
Python笔记之观察者模式
2019/11/20 Python
pytorch 准备、训练和测试自己的图片数据的方法
2020/01/10 Python
基于python实现检索标记敏感词并输出
2020/05/07 Python
浅析Python 责任链设计模式
2020/09/11 Python
html5 利用canvas手写签名并保存的实现方法
2018/07/12 HTML / CSS
西班牙语在线票务市场:SuperBoletería
2019/06/10 全球购物
阿里巴巴Oracle DBA笔试题答案-备份恢复类
2013/11/20 面试题
一套比较完整的软件测试人员面试题
2012/05/13 面试题
医校毕业生自我鉴定
2014/01/25 职场文书
护士岗前培训自我评鉴
2014/02/28 职场文书
文明礼仪伴我行演讲稿
2014/05/12 职场文书
JavaWeb 入门:Hello Servlet
2021/07/16 Java/Android
Android超详细讲解组件ScrollView的使用
2022/03/31 Java/Android