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 session机制
Jul 17 PHP
php实现简单的语法高亮函数实例分析
Apr 27 PHP
php实现html标签闭合检测与修复方法
Jul 09 PHP
php实现的农历算法实例
Aug 11 PHP
jQuery+Ajax+PHP“喜欢”评级功能实现代码
Oct 08 PHP
PHP生成静态HTML文档实现代码
Jun 23 PHP
php实现数组纵向转横向并过滤重复值的方法分析
May 29 PHP
Thinkphp结合AJAX长轮询实现PC与APP推送详解
Jul 31 PHP
PHP设计模式之原型设计模式原理与用法分析
Apr 25 PHP
PHP标准库(PHP SPL)详解
Mar 16 PHP
关于Laravel参数验证的一些疑与惑
Nov 19 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伪静态写法附代码
2008/06/20 PHP
解析php类的注册与自动加载
2013/07/05 PHP
Php header()函数语法及使用代码
2013/11/04 PHP
JavaScript 函数调用规则
2009/09/14 Javascript
cookie 最近浏览记录(中文escape转码)具体实现
2013/06/08 Javascript
将两个div左右并列显示并实现点击标题切换内容
2013/10/22 Javascript
使用jquery操作session方法分享
2015/01/22 Javascript
jquery获取当前元素索引值用法实例
2015/06/10 Javascript
jQuery里filter()函数与find()函数用法分析
2015/06/24 Javascript
JavaScript如何调试有哪些建议和技巧附五款有用的调试工具
2015/10/28 Javascript
基于JS设计12306登录页面
2016/12/28 Javascript
详解vue2.0脚手架的webpack 配置文件分析
2017/05/27 Javascript
Node.js+jade+mongodb+mongoose实现爬虫分离入库与生成静态文件的方法
2017/09/20 Javascript
浅谈JavaScript中你可能不知道URL构造函数的属性
2020/07/13 Javascript
python实现马耳可夫链算法实例分析
2015/05/20 Python
python获取元素在数组中索引号的方法
2015/07/15 Python
Python切换pip安装源的方法详解
2016/11/18 Python
Python2.7+pytesser实现简单验证码的识别方法
2017/12/29 Python
Django框架使用富文本编辑器Uedit的方法分析
2018/07/31 Python
Python使用pickle模块报错EOFError Ran out of input的解决方法
2018/08/16 Python
python 中文件输入输出及os模块对文件系统的操作方法
2018/08/27 Python
浅析python参数的知识点
2018/12/10 Python
python添加菜单图文讲解
2019/06/04 Python
python 实现将多条曲线画在一幅图上的方法
2019/07/07 Python
解决Keras 与 Tensorflow 版本之间的兼容性问题
2020/02/07 Python
Python应用自动化部署工具Fabric原理及使用解析
2020/11/30 Python
意大利奢华内衣制造商:Cosabella
2017/08/29 全球购物
购买英国原创艺术:Art Gallery
2018/08/25 全球购物
科颜氏英国官网:Kiehl’s英国
2019/11/20 全球购物
软件测试工程师笔试题带答案
2015/03/27 面试题
教学改革实施方案
2014/03/31 职场文书
《云房子》教学反思
2014/04/20 职场文书
企业总经理任命书
2014/06/05 职场文书
公司员工活动策划方案
2014/08/20 职场文书
军训心得体会范文(2016最新篇)
2016/01/11 职场文书
Python中非常使用的6种基本变量的操作与技巧
2022/03/22 Python