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网上调查系统
Oct 09 PHP
php xml留言板 xml存储数据的简单例子
Aug 24 PHP
PHP strtotime函数详解
Dec 18 PHP
利用Ffmpeg获得flv视频缩略图和视频时间的代码
Sep 15 PHP
destoon二次开发模板及调用语法汇总
Jun 21 PHP
Zend Guard使用指南及问题处理
Jan 07 PHP
Zend Framework基本页面布局分析
Mar 19 PHP
PHP微信API接口类
Aug 22 PHP
php统计数组不同元素的个数的实例方法
Sep 26 PHP
Laravel第三方包报class not found的解决方法
Oct 13 PHP
PHP 计算至少是其他数字两倍的最大数的实现代码
May 26 PHP
php png失真的原因及解决办法
Nov 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
判断Keep-Alive模式的HTTP请求的结束的实现代码
2011/08/06 PHP
php笔记之:有规律大文件的读取与写入的分析
2013/04/26 PHP
thinkPHP实现MemCache分布式缓存功能
2016/03/23 PHP
PHP实现防盗链的方法分析
2017/07/25 PHP
PHP中十六进制颜色与RGB颜色值互转的方法
2019/03/18 PHP
Swoole4.4协程抢占式调度器详解
2019/05/23 PHP
javascript getElementsByClassName函数
2010/04/01 Javascript
Javascript处理DOM元素事件实现代码
2012/05/23 Javascript
js 获取时间间隔实现代码
2014/05/12 Javascript
使用jQuery设置disabled属性与移除disabled属性
2014/08/21 Javascript
javascript异步处理工作机制详解
2015/04/13 Javascript
JS实现点击复选框将按钮或文本框变为灰色不可用的方法
2015/08/11 Javascript
JS实现图片高亮展示效果实例
2015/11/24 Javascript
jQuery的内容过滤选择器学习教程
2016/04/18 Javascript
Bootstrap carousel轮转图的使用实例详解
2016/05/17 Javascript
JavaScript中无法通过div.style.left获取值的解决方法
2017/02/19 Javascript
微信小程序 本地数据存储实例详解
2017/04/13 Javascript
angularjs实现天气预报功能
2020/06/16 Javascript
jQuery ajax读取本地json文件的实例
2017/10/31 jQuery
ExtJs整合Echarts的示例代码
2018/02/27 Javascript
浅谈Vue下使用百度地图的简易方法
2018/03/23 Javascript
微信小程序使用wx.request请求服务器json数据并渲染到页面操作示例
2019/03/30 Javascript
这15个Vue指令,让你的项目开发爽到爆
2019/10/11 Javascript
[04:29]2014DOTA2国际邀请赛 主赛事第三日TOPPLAY
2014/07/21 DOTA
[04:03]辉夜杯主赛事 12月25日RECAP精彩回顾
2015/12/26 DOTA
Python Sqlite3以字典形式返回查询结果的实现方法
2016/10/03 Python
python中的随机函数random的用法示例
2018/01/27 Python
Python之——生成动态路由轨迹图的实例
2019/11/22 Python
Python爬虫JSON及JSONPath运行原理详解
2020/06/04 Python
德国拖鞋网站:German Slippers
2019/11/08 全球购物
写给女朋友的道歉信
2014/01/08 职场文书
2014年教研工作总结
2014/12/06 职场文书
课程设计感想范文
2015/08/11 职场文书
小学四年级作文之最感动的一件事
2019/11/01 职场文书
Go 通过结构struct实现接口interface的问题
2021/10/05 Golang
java实现web实时消息推送的七种方案
2022/07/23 Java/Android