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与MySQL交互使用详解
Oct 09 PHP
php学习笔记 [预定义数组(超全局数组)]
Jun 09 PHP
PHP数组操作汇总 php数组的使用技巧
Jul 17 PHP
php简单的会话类代码
Aug 08 PHP
joomla jce editor 解决上传中文名文件失败问题
Jun 09 PHP
php+ajax实现图片文件上传功能实例
Jun 17 PHP
php实现两表合并成新表并且有序排列的方法
Dec 05 PHP
PHP连接MySQL数据的操作要点
Mar 20 PHP
PHP编程获取图片的主色调的方法【基于Imagick扩展】
Aug 02 PHP
PHP DB 数据库连接类定义与用法示例
Mar 11 PHP
php中的依赖注入实例详解
Aug 14 PHP
php7 图形用户界面GUI 开发示例
Feb 22 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实现网站插件机制的方法
2009/11/10 PHP
PHP 正则表达式小结
2015/02/12 PHP
PHP中ID设置自增后不连续的原因分析及解决办法
2016/08/21 PHP
PHP面相对象中的重载与重写
2017/02/13 PHP
laravel框架创建授权策略实例分析
2019/11/22 PHP
jquery给图片添加鼠标经过时的边框效果
2013/11/12 Javascript
javascript实现依次输入input自动定焦
2014/12/23 Javascript
JavaScript中用sort()方法对数组元素进行排序的操作
2015/06/09 Javascript
实例讲解jquery与json的结合
2016/01/07 Javascript
JS模拟的Map类实现方法
2016/06/17 Javascript
AngularJs每天学习之总体介绍
2017/08/07 Javascript
js 客户端打印html 并且去掉页眉、页脚的实例
2017/11/03 Javascript
Vue的移动端多图上传插件vue-easy-uploader的示例代码
2017/11/27 Javascript
详解使用vuex进行菜单管理
2017/12/21 Javascript
Node.js实现mysql连接池使用事务自动回收连接的方法示例
2018/02/03 Javascript
layui的table中显示图片方法
2018/08/17 Javascript
Node.js console控制台简单用法分析
2019/01/04 Javascript
vuex 中插件的编写案例解析
2019/06/10 Javascript
微信小程序实现音乐播放页面布局
2020/12/11 Javascript
JS+JQuery实现无缝连接轮播图
2020/12/30 jQuery
Python中给List添加元素的4种方法分享
2014/11/28 Python
python使用tornado实现简单爬虫
2018/07/28 Python
APIStar:一个专为Python3设计的API框架
2018/09/26 Python
Python修改文件往指定行插入内容的实例
2019/01/30 Python
浅谈Python3中strip()、lstrip()、rstrip()用法详解
2019/04/29 Python
django数据库自动重连的方法实例
2019/07/21 Python
解决python运行启动报错问题
2020/06/01 Python
一款纯css3实现的圆形旋转分享按钮旋转角度可自己调整
2014/09/02 HTML / CSS
Bailey帽子官方商店:Bailey Hats
2018/09/25 全球购物
澳大利亚领先的武术用品和健身器材供应商:SMAI
2019/03/24 全球购物
物流合作计划书
2014/01/10 职场文书
合作投资意向书
2014/04/01 职场文书
移交协议书
2014/08/19 职场文书
python批量创建变量并赋值操作
2021/06/03 Python
Android基于Fresco实现圆角和圆形图片
2022/04/01 Java/Android
python在package下继续嵌套一个package
2022/04/14 Python