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 相关文章推荐
phpMyAdmin 安装配置方法和问题解决
Jun 08 PHP
基于Zend的Captcha机制的应用
May 02 PHP
PHP函数分享之curl方式取得数据、模拟登陆、POST数据
Jun 04 PHP
php函数实现判断是否移动端访问
Mar 03 PHP
PHP批量去除BOM头代码分享
Jun 26 PHP
Thinkphp模板标签if和eq的区别和比较实例分析
Jul 01 PHP
php中switch语句用法详解
Aug 17 PHP
PHP实现加密文本文件并限制特定页面的存取的效果
Oct 21 PHP
PHP使用GD库制作验证码的方法(点击验证码或看不清会刷新验证码)
Aug 15 PHP
在Laravel5.6中使用Swoole的协程数据库查询
Jun 15 PHP
php和vue配合使用技巧和方法
May 09 PHP
PHP安装扩展mcrypt以及相关依赖项深入讲解
Mar 04 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
php5数字型字符串加解密代码
2008/04/24 PHP
PHP 用数组降低程序的时间复杂度
2009/12/04 PHP
实例讲解PHP表单验证功能
2019/02/15 PHP
让getElementsByName适应IE和firefox的方法
2007/09/24 Javascript
基于jquery的一个拖拽到指定区域内的效果
2011/09/21 Javascript
window.open打开页面居中显示的示例代码
2013/12/27 Javascript
使用jquery实现放大镜效果
2014/09/02 Javascript
10分钟学会写Jquery插件实例教程
2014/09/06 Javascript
JavaScript知识点总结(四)之逻辑OR运算符详解
2016/05/31 Javascript
Vuejs第九篇之组件作用域及props数据传递实例详解
2016/09/05 Javascript
JS使用正则截取两个字符串之间的字符串实现方法详解
2017/01/06 Javascript
js实现短信发送倒计时功能(正则验证)
2017/02/10 Javascript
最基础的vue.js双向绑定操作
2017/08/23 Javascript
js提取中文拼音首字母的封装工具类
2018/03/12 Javascript
详解React-Router中Url参数改变页面不刷新的解决办法
2018/05/08 Javascript
vue异步加载高德地图的实现
2018/06/19 Javascript
细说webpack6 Babel的使用详解
2019/09/26 Javascript
Vue中点击active并第一个默认选中功能的实现
2020/02/24 Javascript
[01:34]2016国际邀请赛中国区预选赛IG战队教练采访
2016/06/27 DOTA
Python中使用装饰器和元编程实现结构体类实例
2015/01/28 Python
python绘图方法实例入门
2015/05/19 Python
Python之批量创建文件的实例讲解
2018/05/10 Python
Selenium鼠标与键盘事件常用操作方法示例
2018/08/13 Python
python读取TXT每行,并存到LIST中的方法
2018/10/26 Python
python time()的实例用法
2020/11/03 Python
使用C#编写创建一个线程的代码
2013/01/22 面试题
外贸公司实习自我鉴定
2013/09/24 职场文书
俞敏洪北大演讲稿
2014/05/22 职场文书
主题党日活动总结
2014/07/08 职场文书
教师党员个人整改措施
2014/10/27 职场文书
学生旷课检讨书500字
2014/10/28 职场文书
2015高中教师个人工作总结
2015/07/21 职场文书
2019请假条的基本格式及范文!
2019/07/05 职场文书
Python中常见的导入方式总结
2021/05/06 Python
MySQL的索引你了解吗
2022/03/13 MySQL
为Centos安装指定版本的Docker
2022/04/01 Servers