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 相关文章推荐
php实现ping
Oct 09 PHP
php数组函数序列之array_flip() 将数组键名与值对调
Nov 07 PHP
一个PHP并发访问实例代码
Sep 06 PHP
使用PHP备份MYSQL数据的多种方法
Jan 15 PHP
php 批量添加多行文本框textarea一行一个
Jun 03 PHP
PHP制作3D扇形统计图以及对图片进行缩放操作实例
Oct 23 PHP
php实现mysql备份恢复分卷处理的方法
Dec 26 PHP
thinkphp中字符截取函数msubstr()用法分析
Jan 09 PHP
PHP和MYSQL实现分页导航思路详解
Apr 11 PHP
PHP设计模式之装饰器模式实例详解
Feb 07 PHP
PHP面向对象程序设计之对象的遍历操作示例
Jun 12 PHP
PhpStorm2020.1 安装 debug - Postman 调用的详细教程
Aug 17 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
php学习之function的用法
2012/07/14 PHP
PHP连接Access数据库的方法小结
2013/06/20 PHP
PHP简单预防sql注入的方法
2016/09/27 PHP
取得父标签
2006/11/14 Javascript
Extjs学习笔记之七 布局
2010/01/08 Javascript
jQuery下通过replace字符串替换实现大小图片切换
2012/05/22 Javascript
谈谈JSON对象和字符串之间的相互转换JSON.stringify(obj)和JSON.parse(string)
2015/10/01 Javascript
JavaScript引用类型和基本类型详解
2016/01/06 Javascript
10个JavaScript中易犯小错误
2016/02/14 Javascript
在React框架中实现一些AngularJS中ng指令的例子
2016/03/06 Javascript
一个字符串中出现次数最多的字符 统计这个次数【实现代码】
2016/04/29 Javascript
jQuery页面加载初始化的3种方法(推荐)
2016/06/02 Javascript
JavaScript中关于iframe滚动条的去除和保留
2016/11/17 Javascript
基于vue-simplemde实现图片拖拽、粘贴功能
2018/04/12 Javascript
妙用缓存调用链实现JS方法的重载
2018/04/30 Javascript
详解vue2.0+axios+mock+axios-mock+adapter实现登陆
2018/07/19 Javascript
如何使用proxy实现一个简单完整的MVVM库的示例代码
2019/09/17 Javascript
探索浏览器页面关闭window.close()的使用详解
2020/08/21 Javascript
基于JavaScript实现轮播图效果
2021/01/02 Javascript
[00:58]他们到底在电话里听到了什么?
2017/11/21 DOTA
python的re模块应用实例
2014/09/26 Python
Python标准库内置函数complex介绍
2014/11/25 Python
Python机器学习之决策树算法实例详解
2017/12/06 Python
python列表生成式与列表生成器的使用
2018/02/23 Python
python 实现的发送邮件模板【普通邮件、带附件、带图片邮件】
2019/07/06 Python
如何用Python破解wifi密码过程详解
2019/07/12 Python
关于PyTorch 自动求导机制详解
2019/08/18 Python
python算的上脚本语言吗
2020/06/22 Python
Strawberrynet草莓网新加坡站:护肤、彩妆、香水及美发产品
2018/08/31 全球购物
英国家居用品和家居装饰品购物网站:Cox & Cox
2019/08/25 全球购物
物流经理自我评价
2013/09/23 职场文书
工程管理专业个人求职信范文
2013/12/07 职场文书
餐饮服务食品安全责任书
2014/07/25 职场文书
2015初中政教处工作总结
2015/07/21 职场文书
2015年教学副校长工作总结
2015/07/22 职场文书
安全教育日主题班会
2015/08/13 职场文书