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的FTP学习(二)
Oct 09 PHP
使用TinyButStrong模板引擎来做WEB开发
Mar 16 PHP
php实现jQuery扩展函数
Oct 30 PHP
discuz authcode 经典php加密解密函数解析
Jul 12 PHP
PHP连接SQLSERVER 注意事项(附dll文件下载)
Jun 28 PHP
php页面防重复提交方法总结
Nov 25 PHP
php实现判断访问来路是否为搜索引擎机器人的方法
Apr 15 PHP
Yii2针对指定url的生成及图片等的引入方法小结
Jul 18 PHP
php版微信公众账号第三方管理工具开发简明教程
Sep 23 PHP
Yii2使用$this-&gt;context获取当前的Module、Controller(控制器)、Action等
Mar 29 PHP
thinkphp分页集成实例
Jul 24 PHP
详解PHP使用日期时间处理器Carbon人性化显示时间
Aug 10 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
日本十大惊悚动漫
2020/03/04 日漫
一个简单的自动发送邮件系统(二)
2006/10/09 PHP
在普通HTTP上安全地传输密码
2007/07/21 PHP
Eclipse中php插件安装及Xdebug配置的使用详解
2013/04/25 PHP
php使用Image Magick将PDF文件转换为JPG文件的方法
2015/04/01 PHP
PHP验证信用卡卡号是否正确函数
2015/05/27 PHP
php实现映射操作实例详解
2019/10/02 PHP
查询绑定数据岛的表格中的文本并修改显示方式的js代码
2009/12/15 Javascript
PHP 与 js的通信(via ajax,json)
2010/11/16 Javascript
jquery 元素控制(追加元素/追加内容)介绍及应用
2013/04/21 Javascript
jQuery实现动画效果的简单实例
2014/01/27 Javascript
jquery网页回到顶部效果(图标渐隐,自写)
2014/06/16 Javascript
Eclipse引入jquery报错如何解决
2015/12/01 Javascript
基于JavaScript实现类似于百度学术高级检索功能
2016/03/02 Javascript
javascript数据结构之串的概念与用法分析
2017/04/12 Javascript
解决JavaScript layui 下拉框不显示的问题
2018/08/14 Javascript
详解mpvue scroll-view自动回弹bug解决方案
2018/10/01 Javascript
Python MySQLdb模块连接操作mysql数据库实例
2015/04/08 Python
python snownlp情感分析简易demo(分享)
2017/06/04 Python
Linux下python制作名片示例
2018/07/20 Python
python中dict使用方法详解
2019/07/17 Python
python pandas cumsum求累计次数的用法
2019/07/29 Python
Pandas时间序列重采样(resample)方法中closed、label的作用详解
2019/12/10 Python
Python爬虫简单运用爬取代理IP的实现
2020/12/01 Python
python生成word合同的实例方法
2021/01/12 Python
25个CSS3动画按钮和菜单教程分享
2012/10/03 HTML / CSS
印度首个本地在线平台:nearbuy
2019/03/28 全球购物
DeinDesign德国:设计自己的手机壳
2019/12/14 全球购物
大家访活动实施方案
2014/03/10 职场文书
品质主管岗位职责
2014/03/16 职场文书
党员公开承诺书
2014/03/25 职场文书
学生上课迟到检讨书
2015/01/01 职场文书
勤俭节约主题班会
2015/08/13 职场文书
redis内存空间效率问题的深入探究
2021/05/17 Redis
Mysql排序的特性详情
2021/11/01 MySQL
LeetCode189轮转数组python示例
2022/08/05 Python