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语法(3)
Oct 09 PHP
php生成随机数或者字符串的代码
Sep 05 PHP
PHP中MVC模式的模板引擎开发经验分享
Mar 23 PHP
PhpMyAdmin出现export.php Missing parameter: what /export_type错误解决方法
Aug 09 PHP
解析如何屏蔽php中的phpinfo()函数
Jun 06 PHP
解析如何修改phpmyadmin中的默认登陆超时时间
Jun 25 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(九)
Jun 24 PHP
ThinkPHP开发框架函数详解:C方法
Aug 14 PHP
PHP微信API接口类
Aug 22 PHP
Yii框架弹出窗口组件CJuiDialog用法分析
Jan 07 PHP
php正则表达式基本知识与应用详解【经典教程】
Apr 17 PHP
PHP检测接口Traversable用法详解
Dec 29 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中__get()和__set()的用法实例详解
2013/06/04 PHP
四个PHP非常实用的功能
2015/09/29 PHP
php函数传值的引用传递注意事项分析
2016/06/25 PHP
070823更新的一个[消息提示框]组件 兼容ie7
2007/08/29 Javascript
javascript数组的扩展实现代码集合
2008/06/01 Javascript
JS数学函数Exp使用说明
2012/08/09 Javascript
jquery实现的一个导航滚动效果具体代码
2013/05/27 Javascript
window.open()详解及浏览器兼容性问题示例探讨
2014/05/29 Javascript
jquery中post方法用法实例
2014/10/21 Javascript
jquery dataTable 后台加载数据并分页实例代码
2017/06/07 jQuery
JavaScript之RegExp_动力节点Java学院整理
2017/06/29 Javascript
JS数组交集、并集、差集的示例代码
2017/08/23 Javascript
nodejs基于express实现文件上传的方法
2018/03/19 NodeJs
Python程序员开发中常犯的10个错误
2014/07/07 Python
Python中使用asyncio 封装文件读写
2016/09/11 Python
Python下实现的RSA加密/解密及签名/验证功能示例
2017/07/17 Python
用python制作游戏外挂
2018/01/04 Python
Python绘制的二项分布概率图示例
2018/08/22 Python
python3 自动识别usb连接状态,即对usb重连的判断方法
2019/07/03 Python
python 实现Flask中返回图片流给前端展示
2020/01/09 Python
Python3 实现爬取网站下所有URL方式
2020/01/16 Python
Python爬虫库requests获取响应内容、响应状态码、响应头
2020/01/25 Python
python查找特定名称文件并按序号、文件名分行打印输出的方法
2020/04/24 Python
python3.9.1环境安装的方法(图文)
2021/02/02 Python
Dodax奥地利:音乐、电影、书籍、玩具、电子产品等
2019/08/31 全球购物
牛津在线药房:Oxford Online Pharmacy
2020/11/16 全球购物
财务主管的岗位职责
2013/12/30 职场文书
贷款担保书范文
2014/05/13 职场文书
安全生产宣传标语
2014/06/06 职场文书
2014年9.18纪念日演讲稿
2014/09/14 职场文书
教师群众路线教育实践活动学习笔记
2014/11/05 职场文书
法制教育讲座心得体会
2016/01/14 职场文书
《秋天的怀念》教学反思
2016/02/17 职场文书
Python入门之使用pandas分析excel数据
2021/05/12 Python
nginx内存池源码解析
2021/11/20 Servers
JavaScript异步操作中串行和并行
2021/11/20 Javascript