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 相关文章推荐
一个简单的自动发送邮件系统(三)
Oct 09 PHP
一个用php实现的获取URL信息的类
Jan 02 PHP
PHP中的日期处理方法集锦
Jan 02 PHP
PHP中调用ASP.NET的WebService的代码
Apr 22 PHP
改写函数实现PHP二维/三维数组转字符串
Sep 13 PHP
ThinkPHP模板判断输出Empty标签用法详解
Jun 30 PHP
php缓冲输出实例分析
Jan 05 PHP
php带抄送和密件抄送的邮件发送方法
Mar 20 PHP
PHP使用递归方式列出当前目录下所有文件的方法
Jun 02 PHP
yii2控制器Controller Ajax操作示例
Jul 23 PHP
yii2 开发api接口时优雅的处理全局异常的方法
May 14 PHP
PHP类的自动加载与命名空间用法实例分析
Jun 05 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
分享最受欢迎的5款PHP框架
2014/11/27 PHP
php使用curl实现ftp文件下载功能
2017/05/16 PHP
PHP 断点续传实例详解
2017/11/11 PHP
PHP实现的防止跨站和xss攻击代码【来自阿里云】
2018/01/29 PHP
PHP+fiddler抓包采集微信文章阅读数点赞数的思路详解
2019/12/20 PHP
jQuery实现返回顶部功能适合不支持js的浏览器
2014/08/19 Javascript
jQuery中outerWidth()方法用法实例
2015/01/19 Javascript
JavaScript编写带旋转+线条干扰的验证码脚本实例
2016/05/30 Javascript
AngularJS 单元测试(一)详解
2016/09/21 Javascript
js 动态生成json对象、时时更新json对象的方法
2016/12/02 Javascript
three.js实现围绕某物体旋转
2017/01/25 Javascript
js原生代码实现轮播图的实例讲解
2017/07/28 Javascript
jquery写出PC端轮播图实例
2018/01/26 jQuery
JS实现百度网盘任意文件强制下载功能
2018/08/31 Javascript
vue组件之间的数据传递方法详解
2019/04/19 Javascript
微信小程序授权登陆及每次检查是否授权实例代码
2019/09/18 Javascript
[02:44]DOTA2英雄基础教程 钢背兽
2013/12/19 DOTA
对于Python装饰器使用的一些建议
2015/06/03 Python
python将一个英文语句以单词为单位逆序排放的方法
2018/12/20 Python
详解pytorch 0.4.0迁移指南
2019/06/16 Python
Python实现二叉树的最小深度的两种方法
2019/09/30 Python
python flask搭建web应用教程
2019/11/19 Python
python scrapy重复执行实现代码详解
2019/12/28 Python
python实现的Iou与Giou代码
2020/01/18 Python
Pycharm中切换pytorch的环境和配置的教程详解
2020/03/13 Python
Python计算信息熵实例
2020/06/18 Python
Python中正则表达式对单个字符,多个字符和匹配边界等使用
2021/01/27 Python
python time.strptime格式化实例详解
2021/02/03 Python
结合CSS3的布局新特征谈谈常见布局方法
2016/01/22 HTML / CSS
FC-Moto英国:欧洲最大的摩托车服装和头盔商店之一
2019/08/25 全球购物
2013年入党人员的自我鉴定
2013/10/25 职场文书
2014年五四青年节演讲稿范文
2014/04/22 职场文书
大学优秀班集体申报材料
2014/05/23 职场文书
政风行风建设整改方案
2014/10/27 职场文书
2015年助残日活动总结
2015/03/27 职场文书
2015学校师德师风工作总结
2015/04/22 职场文书