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 相关文章推荐
mysql5详细安装教程
Jan 15 PHP
php中使用ExcelFileParser处理excel获得数据(可作批量导入到数据库使用)
Aug 21 PHP
mysql_num_rows VS COUNT 效率问题分析
Apr 23 PHP
php修改时间格式的代码
May 29 PHP
php中一个有意思的日期逻辑处理
Mar 25 PHP
php将图片保存入mysql数据库失败的解决方法
Dec 27 PHP
php数组添加与删除单元的常用函数实例分析
Feb 16 PHP
分享一则PHP定义函数代码
Feb 26 PHP
PHP框架自动加载类文件原理详解
Jun 06 PHP
laravel 5.4 + vue + vux + element的环境搭配过程介绍
Apr 26 PHP
php 获取xml接口数据的处理方法
May 31 PHP
php和C#的yield迭代器实现方法对比分析
Jul 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
php实现微信公众平台账号自定义菜单类
2015/10/11 PHP
PHP实现简单ajax Loading加载功能示例
2016/12/28 PHP
php获取是星期几的的一些常用姿势
2019/12/15 PHP
javascript instanceof,typeof的区别
2010/03/24 Javascript
javascript 判断数组是否已包含了某个元素的函数
2010/05/30 Javascript
JQuery从头学起第二讲
2010/07/04 Javascript
JQUERY 获取IFrame中对象及获取其父窗口中对象示例
2013/08/19 Javascript
jquery序列化表单以及回调函数的使用示例
2014/07/02 Javascript
JavaScript使用pop方法移除数组最后一个元素用法实例
2015/04/06 Javascript
JS实现的简洁二级导航菜单雏形效果
2015/10/13 Javascript
学习vue.js中class与style绑定
2016/12/03 Javascript
javascript基础知识之html5轮播图实例讲解(44)
2017/02/17 Javascript
jQuery滚动插件scrollable.js用法分析
2017/05/25 jQuery
JS实现的集合去重,交集,并集,差集功能示例
2018/03/13 Javascript
vue中如何实现pdf文件预览的方法
2018/07/12 Javascript
jQuery滑动效果实现方法分析
2018/09/05 jQuery
原生js添加一个或多个类名的方法分析
2019/07/30 Javascript
node后端服务保活的实现
2019/11/10 Javascript
Vue强制组件重新渲染的方法讨论
2020/02/03 Javascript
原生js实现五子棋游戏
2020/05/28 Javascript
[14:03]2017DOTA2亚洲邀请赛开幕式:12神兵演绎水墨中华
2017/04/01 DOTA
[38:38]完美世界DOTA2联赛PWL S3 access vs Rebirth 第二场 12.17
2020/12/18 DOTA
python3中set(集合)的语法总结分享
2017/03/24 Python
Python中动态检测编码chardet的使用教程
2017/07/06 Python
django在接受post请求时显示403forbidden实例解析
2018/01/25 Python
Python中判断输入是否为数字的实现代码
2018/05/26 Python
win10 64bit下python NLTK安装教程
2018/09/19 Python
解决Python一行输出不显示的问题
2018/12/03 Python
香港连卡佛百货官网:Lane Crawford
2019/09/04 全球购物
销售行业个人求职自荐信
2013/09/25 职场文书
人力资源部培训专员岗位职责
2014/01/02 职场文书
中学教师培训制度
2014/01/31 职场文书
充分就业社区汇报材料
2014/05/07 职场文书
2014镇党委班子对照检查材料思想汇报
2014/09/23 职场文书
2015年质检工作总结
2015/05/04 职场文书
导游词之阆中古城
2019/12/23 职场文书