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 相关文章推荐
phpBB BBcode处理的漏洞
Oct 09 PHP
dedecms采集中可以过滤多行代码的正则表达式
Mar 17 PHP
MySql 按时间段查询数据方法(实例说明)
Nov 02 PHP
PHP STRING 陷阱原理说明
Jul 24 PHP
php使浏览器直接下载pdf文件的方法
Nov 15 PHP
php 字符串压缩方法比较示例
Jan 23 PHP
PHP实现图片压缩的两则实例
Jul 19 PHP
php使用simplexml_load_file加载XML文件并显示XML的方法
Mar 19 PHP
PHP截取IE浏览器并缩小原图的方法
Mar 04 PHP
CI框架整合widget(页面格局)的方法
May 17 PHP
基于yaf框架和uploadify插件,做的一个导入excel文件,查看并保存数据的功能
Jan 24 PHP
PHP实现批量修改文件名的方法示例
Sep 18 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
php面向对象全攻略 (十二) 抽象方法和抽象类
2009/09/30 PHP
分享最受欢迎的5款PHP框架
2014/11/27 PHP
浅谈PHP中如何实现Hook机制
2017/11/14 PHP
Jquery 高亮显示文本中重要的关键字
2009/12/24 Javascript
jQuery最佳实践完整篇
2011/08/20 Javascript
JS 如果改变span标签的是否隐藏属性
2011/10/06 Javascript
JS通过分析userAgent属性来判断浏览器的类型及版本
2014/03/28 Javascript
jQuery实现垂直半透明手风琴特效代码分享
2015/08/21 Javascript
Bootstrap每天必学之面板
2015/11/30 Javascript
详解javascript实现瀑布流列式布局
2016/01/29 Javascript
3kb jQuery代码搞定各种树形选择的实现方法
2016/06/10 Javascript
ReactNative页面跳转实例代码
2016/09/27 Javascript
BootStrap 图标icon符号图标glyphicons不正常显示的快速解决办法
2016/12/08 Javascript
AngularJS路由实现页面跳转实例
2017/03/03 Javascript
C#微信小程序服务端获取用户解密信息实例代码
2017/03/10 Javascript
postman自定义函数实现 时间函数的思路详解
2019/04/17 Javascript
js实现多个标题吸顶效果
2020/01/08 Javascript
vue 获取url里参数的两种方法小结
2020/11/12 Javascript
nodejs中使用worker_threads来创建新的线程的方法
2021/01/22 NodeJs
Python实现的检测web服务器健康状况的小程序
2014/09/17 Python
Python实现获取操作系统版本信息方法
2015/04/08 Python
python中查看变量内存地址的方法
2015/05/05 Python
基础的十进制按位运算总结与在Python中的计算示例
2016/06/28 Python
Django ORM框架的定时任务如何使用详解
2017/10/19 Python
Python实现绘制双柱状图并显示数值功能示例
2018/06/23 Python
python利用Opencv实现人脸识别功能
2019/04/25 Python
Jupyter notebook如何实现指定浏览器打开
2020/05/13 Python
学会迭代器设计模式,帮你大幅提升python性能
2021/01/03 Python
html5生成柱状图(条形图)效果的实例代码
2016/03/25 HTML / CSS
美国网上订购鲜花:FTD
2016/09/23 全球购物
SHEIN香港:价格实惠的女性时尚服装
2018/08/14 全球购物
什么是虚拟内存?虚拟内存有什么优势?
2016/02/09 面试题
打架检讨书2000字
2014/02/22 职场文书
二审代理词范文
2015/05/25 职场文书
Python Pandas常用函数方法总结
2021/06/15 Python
如何使用python包中的sched事件调度器
2022/04/30 Python