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动态生成虚拟现实VRML网页
Oct 09 PHP
mysql 的 like 问题,超强毕杀记!!!
Jan 18 PHP
一些被忽视的PHP函数(简单整理)
Apr 30 PHP
PHP实现的封装验证码类详解
Jun 18 PHP
PHP错误Parse error: syntax error, unexpected end of file in test.php on line 12解决方法
Jun 23 PHP
ZF框架实现发送邮件的方法
Dec 03 PHP
使用JavaScript创建新样式表和新样式规则
Jun 14 PHP
php封装的page分页类完整实例
Oct 18 PHP
PHP经典实用正则表达式小结
May 04 PHP
PHP-FPM和Nginx的通信机制详解
Feb 01 PHP
php简单计算权重的方法示例【适合抽奖类应用】
Jun 10 PHP
laravel框架实现去掉URL中index.php的方法
Oct 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
PHP4与PHP5的时间格式问题
2008/02/17 PHP
PHP获取本周第一天和最后一天示例代码
2014/02/24 PHP
PHP模板引擎smarty详细介绍
2015/05/26 PHP
php简单截取字符串代码示例
2016/10/19 PHP
Ecshop 后台添加新功能栏目及管理权限设置教程
2017/11/21 PHP
PHP中散列密码的安全性分析
2019/07/26 PHP
Packer 3.0 JS压缩及混淆工具 下载
2007/05/03 Javascript
收集的10个免费的jQuery相册
2011/02/26 Javascript
文字不间断滚动(上下左右)实例代码
2013/04/21 Javascript
jQuery中siblings()方法用法实例
2015/01/08 Javascript
深入JavaScript高级程序设计之对象、数组(栈方法,队列方法,重排序方法,迭代方法)
2015/12/01 Javascript
针对JavaScript中this指向的简单理解
2016/08/26 Javascript
bootstrap flask登录页面编写实例
2016/11/01 Javascript
JavaScript获取短信验证码(周期性)
2016/12/29 Javascript
javascript基本数据类型和转换
2017/03/17 Javascript
微信小程序页面间值传递的两种方法
2018/11/26 Javascript
详解小程序BackgroundAudioManager踩坑之旅
2019/12/08 Javascript
Python pickle模块用法实例分析
2015/05/27 Python
用ReactJS和Python的Flask框架编写留言板的代码示例
2015/12/19 Python
Scrapy抓取京东商品、豆瓣电影及代码分享
2017/11/23 Python
OpenCV+Python识别车牌和字符分割的实现
2019/01/31 Python
Python zip函数打包元素实例解析
2019/12/11 Python
使用pandas实现筛选出指定列值所对应的行
2020/12/13 Python
html5 localStorage本地存储_动力节点Java学院整理
2017/07/06 HTML / CSS
浅谈Html5移动端ios/Android兼容性总结
2018/06/01 HTML / CSS
手工制作的意大利太阳镜和光学元件:Illesteva
2019/01/19 全球购物
澳大利亚最好的电动自行车:Leon Cycle
2020/12/19 全球购物
如何用Python输出一个Fibonacci数列
2016/08/28 面试题
面试后的英文感谢信
2014/02/01 职场文书
经典安踏广告词
2014/03/21 职场文书
经济国贸专业求职信
2014/06/18 职场文书
写给媳妇的检讨书
2015/05/06 职场文书
员工辞职信范文大全
2015/05/12 职场文书
自考生自我评价
2019/06/21 职场文书
创业计划书之旅游网站
2019/09/06 职场文书
win10重装系统后上不了网怎么办 win10重装系统网络故障的解决办法
2022/07/23 数码科技