Yii2实现ActiveForm ajax提交


Posted in PHP onMay 26, 2017

做项目时总会碰到ajax提交的功能,特别是在做后台提交时,一般都会用模型自动生成,这个功能的使用会比较频繁,其实只要了解了流程,操作还是挺简单的,使用起来也方便。

表单部分

<?php $form = ActiveForm::begin([ 
  'action' => ['save'], //提交地址(*可省略*) 
  'method'=>'post',  //提交方法(*可省略默认POST*) 
  'id' => 'form-save', //设置ID属性 
  'options' => [ 
    'class' => 'form-horizontal', //设置class属性 
  ], 
  'enableAjaxValidation' => true, 
  'validationUrl' => 'validate-view', 
]); ?> 
 
<?php echo $form->field($model,'company_name', ['inputOptions' => ['placeholder'=>'请输入商家名称','class' => 'form-control'], 'template'=>'<label for="inputCompanyName" class="col-sm-1 control-label"><span class="text-red">*</span> 商家名称</label><div class="col-md-8">{input}</div><label class="col-sm-3" for="inputError">{error}</label>'])->textInput()?> 
 
<?=Html::submitButton('保存',['class'=>'btn btn-primary']); ?> 
 
<?php ActiveForm::end(); ?>

其中:'enableAjaxValidation' => true, 必须设置,告诉表单用ajax提交

控制器(controller)部分

控制器分两部分,一部分是效验表单的正确性,另外一部分是保存

1、效验部分

public function actionValidateView() 
{ 
  $model = new model(); 
  $request = \Yii::$app->getRequest(); 
  if ($request->isPost && $model->load($request->post())) { 
    \Yii::$app->response->format = Response::FORMAT_JSON; 
    return ActiveForm::validate($model); 
  } 
}

2、保存部分

public function actionSave() 
{ 
  \Yii::$app->response->format = Response::FORMAT_JSON; 
  $params = Yii::$app->request->post(); 
  $model = $this->findModel($params[id]); 
 
  if (Yii::$app->request->isPost && $model->load($params)) { 
    return ['success' => $model->save()]; 
  } 
  else{ 
    return ['code'=>'error']; 
  } 
}

Ajax提交from表单

$(function(){ 
$(document).on('beforeSubmit', 'form#form-save', function () { 
    var form = $(this); 
    //返回错误的表单信息 
    if (form.find('.has-error').length) 
    { 
      return false; 
    } 
    //表单提交 
    $.ajax({ 
      url  : form.attr('action'), 
      type  : 'post', 
      data  : form.serialize(), 
      success: function (response){ 
        if(response.success){ 
          alert('保存成功'); 
          window.location.reload(); 
        } 
      }, 
      error : function (){ 
        alert('系统错误'); 
        return false; 
      } 
    }); 
    return false; 
  }); 
});

特别注意本人用的是Yii2 adminlte框架后台,具体操作过程试项目而定,基本操作过程都一样。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
php5 pdo新改动加载注意事项
Sep 11 PHP
php连接Access数据库错误及解决方法
Jun 20 PHP
解析php获取字符串的编码格式的方法(函数)
Jun 21 PHP
PHP下获取上个月、下个月、本月的日期(strtotime,date)
Feb 02 PHP
体育彩票排列三组选三算法分享
Mar 07 PHP
支持中文和其他编码的php截取字符串函数分享(截取中文字符串)
Mar 13 PHP
让codeigniter与swfupload整合的最佳解决方案
Jun 12 PHP
php过滤html标记属性类用法实例
Sep 23 PHP
php编写的抽奖程序中奖概率算法
May 14 PHP
PHP和MySql中32位和64位的整形范围是多少
Feb 18 PHP
PHP基于DOMDocument解析和生成xml的方法分析
Jul 17 PHP
PHP从零开始打造自己的MVC框架之类的自动加载实现方法详解
Jun 03 PHP
Yii2选项卡的简单使用
May 26 #PHP
PHP编程获取各个时间段具体时间的方法
May 26 #PHP
php实现自定义中奖项数和概率的抽奖函数示例
May 26 #PHP
PHP判断密码强度的方法详解
May 26 #PHP
thinkphp实现附件上传功能
May 26 #PHP
微信第三方登录(原生)demo【必看篇】
May 26 #PHP
php写一个函数,实现扫描并打印出自定目录下(含子目录)所有jpg文件名
May 26 #PHP
You might like
用文本文件制作留言板提示(上)
2006/10/09 PHP
php 分页原理详解
2009/08/21 PHP
PHP+SQL 注入攻击的技术实现以及预防办法
2011/01/27 PHP
php+mysql实现无限级分类
2015/11/11 PHP
yii权限控制的方法(三种方法)
2015/12/28 PHP
yii2超好用的日期组件和时间组件
2016/05/05 PHP
用PHP的反射实现委托模式的讲解
2019/03/22 PHP
让ie6也支持websocket采用flash封装实现
2013/02/18 Javascript
javascript间隔刷新的简单实例
2013/11/14 Javascript
jquery checkbox实现单选小例
2013/11/27 Javascript
页面刷新时记住滚动条的位置jquery代码
2014/06/17 Javascript
js获取指定日期周数以及星期几的小例子
2014/06/27 Javascript
Web前端开发工具——bower依赖包管理工具
2016/03/29 Javascript
JavaScript DOM 对象深入了解
2016/07/20 Javascript
文件上传,iframe跨域数据提交的实现
2016/11/18 Javascript
JavaScript门面模式详解
2017/10/19 Javascript
详解微信小程序审核不通过的解决方法
2018/01/17 Javascript
Vue单页面应用保证F5强刷不清空数据的解决方案
2018/01/31 Javascript
javascript实现导航栏分页效果
2019/06/27 Javascript
react PropTypes校验传递的值操作示例
2020/04/28 Javascript
javascript实现移动端触屏拖拽功能
2020/07/29 Javascript
在vue中使用jsonp进行跨域请求接口操作
2020/10/29 Javascript
[01:48]DOTA2 2015国际邀请赛中国区预选赛第二日战报
2015/05/27 DOTA
Ubuntu 下 vim 搭建python 环境 配置
2017/06/12 Python
Python简单获取网卡名称及其IP地址的方法【基于psutil模块】
2018/05/24 Python
浅析Python装饰器以及装饰器模式
2018/05/28 Python
浅析python中的del用法
2020/09/02 Python
python函数超时自动退出的实操方法
2020/12/28 Python
Python Pygame实现俄罗斯方块
2021/02/19 Python
自我评价范文点评
2013/12/04 职场文书
学校卫生检查制度
2014/02/03 职场文书
机电专业求职信
2014/06/14 职场文书
2014年关工委工作总结
2014/11/17 职场文书
餐饮服务食品安全承诺书
2015/04/29 职场文书
中学生运动会广播稿
2015/08/19 职场文书
MySQL视图概念以及相关应用
2022/04/19 MySQL