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下实现折线图效果的代码
Apr 28 PHP
js下函数般调用正则的方法附代码
Jun 22 PHP
php的chr和ord函数实现字符加减乘除运算实现代码
Dec 05 PHP
PHP 文件系统详解
Sep 13 PHP
php中文乱码怎么办如何让浏览器自动识别utf-8
Jan 15 PHP
详细解读PHP中接口的应用
Aug 12 PHP
highchart数据源纵轴json内的值必须是int(详解)
Feb 20 PHP
php实现简单加入购物车功能
Mar 07 PHP
php中pcntl_fork创建子进程的方法实例
Mar 14 PHP
PHP面向对象程序设计之构造方法和析构方法详解
Jun 13 PHP
PHP实现批量修改文件名的方法示例
Sep 18 PHP
解决laravel中日志权限莫名变成了root的问题
Oct 17 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
smtp邮件发送一例
2006/10/09 PHP
php 时间计算问题小结
2009/01/04 PHP
PHP得到mssql的存储过程的输出参数功能实现
2012/11/23 PHP
PHP+ajaxfileupload+jcrop插件完美实现头像上传剪裁
2014/06/09 PHP
PHP curl 抓取AJAX异步内容示例
2014/09/09 PHP
PHP多线程编程之管道通信实例分析
2015/03/07 PHP
php cli配置文件问题分析
2015/10/15 PHP
PHP Header用于页面跳转时的几个注意事项
2016/10/21 PHP
基于JQuery框架的AJAX实例代码
2009/11/03 Javascript
javascript陷阱 一不小心你就中招了(字符运算)
2013/11/10 Javascript
showModalDialog在谷歌浏览器下会返回Null的解决方法
2013/11/27 Javascript
SeaJS入门教程系列之完整示例(三)
2014/03/03 Javascript
使用jquery.validate自定义方法实现&quot;手机号码或者固话至少填写一个&quot;的逻辑验证
2014/09/01 Javascript
JS中的Replace方法使用经验分享
2015/05/20 Javascript
JavaScript 常见安全漏洞和自动化检测技术
2015/08/21 Javascript
jquery拖拽效果完整实例(附demo源码下载)
2016/01/14 Javascript
JavaScript_object基础入门(必看篇)
2016/06/13 Javascript
jQuery+ajax实现局部刷新的两种方法
2017/06/08 jQuery
JS Testing Properties 判断属性是否在对象里的方法
2017/10/01 Javascript
layui框架中layer父子页面交互的方法分析
2017/11/15 Javascript
微信小程序实现人脸检测功能
2018/05/25 Javascript
关于自定义Egg.js的请求级别日志详解
2018/12/12 Javascript
python将视频转换为全字符视频
2019/04/26 Python
Django框架实现分页显示内容的方法详解
2019/05/10 Python
如何查看python关键字
2021/01/17 Python
css3简单练习实现遨游浏览器logo的绘制
2013/01/30 HTML / CSS
全球销量第一生发产品:Viviscal
2017/12/21 全球购物
大学本科毕业生求职信范文
2013/12/18 职场文书
男方父母证婚词
2014/01/12 职场文书
大学生通用个人的自我评价
2014/02/10 职场文书
小小的船教学反思
2014/02/21 职场文书
食品安全工作实施方案
2014/03/26 职场文书
幼儿园春季开学寄语
2014/04/03 职场文书
党的群众路线对照检查材料
2014/09/22 职场文书
就业协议书盖章的注意事项
2014/09/28 职场文书
2014光棍节大学生联谊活动方案
2014/10/10 职场文书