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新手上路(六)
Oct 09 PHP
php的一些小问题
Jul 03 PHP
php数组函数序列之array_values() 获取数组元素值的函数与方法
Oct 30 PHP
PHP生成随机用户名和密码的实现代码
Feb 27 PHP
探讨多键值cookie(php中cookie存取数组)的详解
Jun 06 PHP
php中stdClass的用法分析
Feb 27 PHP
PHP响应post请求上传文件的方法
Dec 17 PHP
php版微信开发之接收消息,自动判断及回复相应消息的方法
Sep 23 PHP
php中如何执行linux命令详解
Nov 06 PHP
PHP实现的只保留字符串首尾字符功能示例【隐藏部分字符串】
Mar 11 PHP
ThinkPHP框架实现的微信支付接口开发完整示例
Apr 10 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 preg_match_all结合str_replace替换内容中所有img
2008/10/11 PHP
ThinkPHP3.2.1图片验证码实现方法
2016/08/19 PHP
基于JQuery实现异步刷新的代码(转载)
2011/03/29 Javascript
passwordStrength 基于jquery的密码强度检测代码使用介绍
2011/10/08 Javascript
javascript时间函数基础介绍
2013/03/28 Javascript
有关于JS构造函数的重载和工厂方法
2013/04/07 Javascript
Jquery实现图片预加载与延时加载的方法
2014/12/22 Javascript
完美兼容多浏览器的js判断图片路径代码汇总
2015/04/17 Javascript
jQuery的事件预绑定
2016/12/05 Javascript
js时间戳与日期格式之间相互转换
2017/12/11 Javascript
angularjs 页面自适应高度的方法
2018/01/17 Javascript
深入理解使用Vue实现Context-Menu的思考与总结
2019/03/09 Javascript
微信小程序wx.request的简单封装
2019/11/13 Javascript
JS实现电商商品展示放大镜特效
2020/01/07 Javascript
JS原型prototype和__proto__用法实例分析
2020/03/14 Javascript
JS数组及对象遍历方法代码汇总
2020/06/16 Javascript
微信小程序实现可长按移动控件
2020/11/01 Javascript
Python实现基于PIL和tesseract的验证码识别功能示例
2018/07/11 Python
Python3对称加密算法AES、DES3实例详解
2018/12/06 Python
windows下安装Python虚拟环境virtualenvwrapper-win
2019/06/14 Python
Python队列RabbitMQ 使用方法实例记录
2019/08/05 Python
django 环境变量配置过程详解
2019/08/06 Python
Python文本处理简单易懂方法解析
2019/12/19 Python
CentOS7下安装python3.6.8的教程详解
2020/01/03 Python
深度学习入门之Pytorch 数据增强的实现
2020/02/26 Python
Python多线程thread及模块使用实例
2020/04/28 Python
解决Python3.8运行tornado项目报NotImplementedError错误
2020/09/02 Python
财务部出纳岗位职责
2013/12/22 职场文书
企业员工爱岗敬业演讲稿
2014/08/26 职场文书
村创先争优活动总结
2014/08/28 职场文书
2014年酒店服务员工作总结
2014/12/08 职场文书
学习保证书100字
2015/02/26 职场文书
工资证明范本
2015/06/12 职场文书
初中班主任工作随笔
2015/08/15 职场文书
MySQL 视图(View)原理解析
2021/05/19 MySQL
MySQL数据库必备之条件查询语句
2021/10/15 MySQL