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 将bmp图片转为jpg等其他任意格式的图片
Jun 29 PHP
php数组函数序列之array_intersect() 返回两个或多个数组的交集数组
Nov 10 PHP
PHP加密函数 Javascript/Js 解密函数
Sep 23 PHP
php中simplexml_load_file函数用法实例
Nov 12 PHP
PHP导入导出Excel代码
Jul 07 PHP
php目录拷贝实现方法
Jul 10 PHP
PHP7多线程搭建教程
Apr 21 PHP
PHP中include和require的区别实例分析
May 07 PHP
PHP连接sftp并下载文件的方法教程
Aug 26 PHP
php的扩展写法总结
May 14 PHP
laravel excel 上传文件保存到本地服务器功能
Nov 14 PHP
PHP设计模式(九)外观模式Facade实例详解【结构型】
May 02 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 中文字符串首字母的获取函数分享
2013/11/04 PHP
php获取随机数组列表的方法
2014/11/13 PHP
Laravel框架实现调用百度翻译API功能示例
2019/05/30 PHP
Hutia 的 JS 代码集
2006/10/24 Javascript
javascript中的几个运算符
2007/06/29 Javascript
解析javascript系统错误:-1072896658的解决办法
2013/07/08 Javascript
js去除浏览器默认底图的方法
2015/06/08 Javascript
JSONObject使用方法详解
2015/12/17 Javascript
jQuery 实现评论等级好评差评特效
2016/05/06 Javascript
js传值后台中文出现乱码的解决方法
2016/06/30 Javascript
js 自带的 map() 方法全面了解
2016/08/16 Javascript
JS实现的Unicode编码转换操作示例
2017/04/28 Javascript
JS中定位 position 的使用实例代码
2017/08/06 Javascript
ES6 Class中实现私有属性的一些方法总结
2019/07/08 Javascript
微信小程序开发摇一摇功能
2019/11/22 Javascript
vue封装自定义指令之动态显示title操作(溢出显示,不溢出不显示)
2020/11/12 Javascript
[55:03]LGD vs EG 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
[01:20:06]TNC vs VG 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
[01:03:03]VP vs Mineski 2018国际邀请赛淘汰赛BO3 第一场 8.22
2018/08/23 DOTA
用Python实现一个简单的线程池
2015/04/07 Python
用于统计项目中代码总行数的Python脚本分享
2015/04/21 Python
Django imgareaselect手动剪切头像实现方法
2015/05/26 Python
python获取一组数据里最大值max函数用法实例
2015/05/26 Python
Python 多线程实例详解
2017/03/25 Python
Python编程判断一个正整数是否为素数的方法
2017/04/14 Python
使用pip发布Python程序的方法步骤
2018/10/11 Python
在tensorflow下利用plt画论文中loss,acc等曲线图实例
2020/06/15 Python
使用AJAX和Django获取数据的方法实例
2020/10/25 Python
澳大利亚领先的宠物用品商店:VetSupply
2017/09/08 全球购物
Cynthia Rowley官网:全球领先的生活方式品牌
2020/10/27 全球购物
残疾人创业典型事迹
2014/02/01 职场文书
致长跑运动员加油稿
2014/02/20 职场文书
培训主管的职业生涯规划
2014/03/06 职场文书
食品流通安全承诺书
2014/05/22 职场文书
办公室班子四风问题对照检查材料
2014/10/04 职场文书
数学教师个人总结
2015/02/06 职场文书