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 相关文章推荐
一个简单计数器的源代码
Oct 09 PHP
PHP 源代码压缩小工具
Dec 22 PHP
php提示undefined index的几种解决方法
May 21 PHP
PHP中使用数组指针函数操作数组示例
Nov 19 PHP
PHP实现二叉树的深度优先与广度优先遍历方法
Sep 28 PHP
php实现背景图上添加圆形logo图标的方法
Nov 17 PHP
php生成0~1随机小数的方法(必看)
Apr 05 PHP
PHP实现基于面向对象的mysqli扩展库增删改查操作工具类
Jul 18 PHP
php 替换文章中的图片路径,下载图片到本地服务器的方法
Feb 06 PHP
PHP封装的page分页类定义与用法完整示例
Dec 24 PHP
PHP7数组的底层实现示例
Aug 25 PHP
php中配置文件保存修改操作 如config.php文件的读取修改等操作
May 12 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
浅析linux下apache服务器的配置和管理
2013/08/10 PHP
PHP使用GETDATE获取当前日期时间作为一个关联数组的方法
2015/03/19 PHP
PHP ADODB实现事务处理功能示例
2018/05/25 PHP
Ajax+Jpgraph实现的动态折线图功能示例
2019/02/11 PHP
laravel执行php artisan migrate报错的解决方法
2019/10/09 PHP
JavaScript 版本自动生成文章摘要
2008/07/23 Javascript
探讨JQUERY JSON的反序列化类 using问题的解决方法
2013/12/19 Javascript
js阻止事件追加的具体实现
2014/10/15 Javascript
深入理解JavaScript系列(19):求值策略(Evaluation strategy)详解
2015/03/05 Javascript
Javascript 是你的高阶函数(高级应用)
2015/06/15 Javascript
浅析AngularJS中的指令
2016/03/20 Javascript
基于BootStrap Metronic开发框架经验小结【二】列表分页处理和插件JSTree的使用
2016/05/12 Javascript
js 转义字符及URI编码详解
2017/02/28 Javascript
剖析Angular Component的源码示例
2018/03/23 Javascript
微信小程序实现倒计时调用相机自动拍照功能
2018/06/10 Javascript
JS实现的简单分页功能示例
2018/08/23 Javascript
vue中的计算属性实例详解
2018/09/19 Javascript
微信小程序动画(Animation)的实现及执行步骤
2018/10/28 Javascript
详解vue中的computed的this指向问题
2018/12/05 Javascript
vue 解决uglifyjs-webpack-plugin打包出现报错的问题
2020/08/04 Javascript
[54:18]DOTA2-DPC中国联赛 正赛 PSG.LGD vs LBZS BO3 第一场 1月22日
2021/03/11 DOTA
使用python 获取进程pid号的方法
2014/03/10 Python
int在python中的含义以及用法
2019/06/27 Python
python使用matplotlib绘制雷达图
2019/10/18 Python
PyCharm使用Docker镜像搭建Python开发环境
2019/12/26 Python
python字典key不能是可以是啥类型
2020/08/04 Python
python 多线程中join()的作用
2020/10/29 Python
德国受欢迎的旅游和休闲网站:lastminute.de
2019/09/23 全球购物
C#中的验证控件有几种
2014/03/08 面试题
优秀员工自荐信范文
2013/10/05 职场文书
爱与责任演讲稿
2014/05/20 职场文书
新文化运动的基本口号
2014/06/21 职场文书
人与自然观后感
2015/06/16 职场文书
医院病假条范文
2015/08/17 职场文书
感谢信
2019/04/11 职场文书
MySQL库表名大小写的选择
2021/06/05 MySQL