GridView直接更新数据,kartik\grid\EditableColumn用法 [ 2.0 版本 ]

视图的_columns.php文件,这里用到的是crudajax生成的

<?php
use yii\helpers\Url; use common\models\ProductCategory; return [ [ 'class' => 'kartik\grid\SerialColumn', 'width' => '30px', ], [ //'class' => '\kartik\grid\DataColumn', 'attribute' => 'name', 'class' => '\kartik\grid\EditableColumn', ], [ 'class' => '\kartik\grid\DataColumn', 'attribute' => 'category.name', ], [ 'class' => '\kartik\grid\EditableColumn', 'attribute' => 'price', ], 'created_at:datetime', [ 'class' => 'kartik\grid\ActionColumn', 'dropdown' => false, 'vAlign' => 'middle', 'urlCreator' => function ($action, $model, $key, $index) { return Url::to([$action, 'id' => $key]); }, 'header' => Yii::t('app', '操作'), 'viewOptions' => ['role' => 'modal-remote', 'title' => 'View', 'data-toggle' => 'tooltip'], 'updateOptions' => ['role' => 'modal-remote', 'title' => 'Update', 'data-toggle' => 'tooltip'], 'deleteOptions' => ['role' => 'modal-remote', 'title' => 'Delete', 'data-confirm' => false, 'data-method' => false,// for overide yii data api 'data-request-method' => 'post', 'data-toggle' => 'tooltip', 'data-confirm-title' => Yii::t('app', '操作确认'), 'data-confirm-message' => Yii::t('app', '你确定要删除这个选项吗?')], ], ]; 

在控制器index方法里加上一段

/*** Lists all Product models.* @return mixed */ public function actionIndex() { $searchModel = new ProductSearch(); $dataProvider = $searchModel->search(Yii::$app->request->queryParams); if ($this->isAjax && Yii::$app->request->post('hasEditable')) { Yii::$app->response->format = Response::FORMAT_JSON; $model = Product::findOne($this->post['editableKey']); $out = ['output' => '', 'message' => '']; $this->post[$model->formName()] = $this->post[$model->formName()][$this->post['editableIndex']]; if ($model->load($this->post)) { // can save model or do something before saving model if($model->save()) { $output = ''; /*if (isset($this->post[$model->formName()]['price_cny'])) { $output = Yii::$app->formatter->asDecimal($model->price, 2); }*/ $out = ['output' => $output, 'message' => '']; }else{ $out['message'] = $model->getErrors(); } }else{ $out['message'] = $model->getErrors(); } return $out; } return $this->render('index', [ 'searchModel' => $searchModel, 'dataProvider' => $dataProvider, ]); } 

基中的$this->isAjax和$this->post,是我在基类定义好了的,同学们可以改为自己的

下面是效果图 ---错误 (#8): 服务器内部错误。图片弄不了

如果需要做权限控制之类的,修改提交地址不想直接放在index方法,可以自定义提交地址,加上editableOptions参数即可

[//'class' => '\kartik\grid\DataColumn','class' => '\kartik\grid\EditableColumn','attribute' => 'price', 'editableOptions'=> function ($model, $key, $index) { return [ //'size'=>'sm', 'formOptions' => [ 'method'=>'post', 'action' => ['editable'] ] ]; } ],

转载于:https://www.cnblogs.com/llxpbbs/articles/9343529.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/413700.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[css] 什么是关键帧动画?

[css] 什么是关键帧动画&#xff1f; 表示关键状态的帧动画叫做关键帧动画。 所谓关键帧动画&#xff0c;就是给需要动画效果的属性&#xff0c;准备一组与时间相关的值&#xff0c;这些值都是在动画序列中比较关键的帧中提取出来的&#xff0c;而其他时间帧中的值&#xff0c…

python webdriver firefox 登录126邮箱,先添加联系人,然后进入首页发送邮件,带附件。...

代码&#xff1a;#encodingutf-8from selenium import webdriverfrom selenium.webdriver.common.keys import Keysfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.support.ui import WebDriverWaitfrom selenium.webdriver.support import expected_con…

[vue] 你是从vue哪个版本开始用的?你知道1.x和2.x有什么区别吗?

[vue] 你是从vue哪个版本开始用的&#xff1f;你知道1.x和2.x有什么区别吗&#xff1f; 像1.0与2.0&#xff0c;我只知道一点-。- 1、 2.0生命生命周期变化感觉变得更加语义化一点&#xff08;有规律可寻&#xff0c;更好记了&#xff09;&#xff0c;而且增加了beforeUpdate、…

[vue] 你知道vue中key的原理吗?说说你对它的理解

[vue] 你知道vue中key的原理吗&#xff1f;说说你对它的理解 key的作用主要是为了高效的更新虚拟DOM; 如果没有唯一的key, 数据更新时, 相同节点更新前后无法准确一一对应起来,会导致更新效率降低; 当页面的数据发生变化时&#xff0c;Diff算法只会比较同一层级的节点&#xf…

Java就应该这样学pdf

下载地址&#xff1a;网盘下载 《其实你应该这样学Java(附盘)》&#xff0c;本书分为3篇。第1篇是Java入门&#xff0c;简单介绍了Java开发环境、类型和运算、选择语句、循环语句、跳转语句、数组的基本应用&#xff1b;第2篇是面向对象的基础知识&#xff0c;包含类、继承以及…

[vue] vue中怎么重置data?

[vue] vue中怎么重置data&#xff1f; 初始状态下设置data数据的默认值&#xff0c;重置时直接bject.assign(this.$data, this.$options.data())说明&#xff1a; this.$data获取当前状态下的data this.$options.data()获取该组件初始状态下的data(即初始默认值) 如果只想修改…

redis nginx session tomcat

Redis解决session共享 http://lyl-zsu.iteye.com/blog/2408292 http://zx10103326.iteye.com/blog/2244195 https://www.dssz.com/3179792.html 注意 要下载 三个 Redis 存放 session的三个包 视频学习地址在&#xff1a; 分布式环境下session跨域共享原理-咕泡学院出品 https:…

[vue-cli]怎么使用vue-cli3创建一个项目?

[vue-cli]怎么使用vue-cli3创建一个项目&#xff1f; 直接 vue create 项目名个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端面试题

[vue-cli]不用vue-cli,你自己有搭建过vue的开发环境吗?流程是什么?

[vue-cli]不用vue-cli&#xff0c;你自己有搭建过vue的开发环境吗&#xff1f;流程是什么&#xff1f; 基本概念 首先先了解先webpack的基本概念&#xff0c;webpack属于一个构建工具&#xff0c;主要有mode、entry、output、loader、plugin这几部分组成。 目标 本文会带你实现…

伪类选择器的用途

伪类选择器的用途 1.做鼠标移入、移出效果切换 .a {display: inline-block;width: 70px;height: 20px;border: 2px solid #e01222;line-height: 20px;text-align: center;color: #e01222; } a:hover {background-color: #e01222;color: #fff;} 2.画三角形 .triangle:before…

[vue-cli]vue-cli默认是单页面的,那要弄成多页面该怎么办呢

[vue-cli]vue-cli默认是单页面的&#xff0c;那要弄成多页面该怎么办呢 创建多个app&#xff1f; app new Vue({}) app2 new Vue({})个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣…

html画特殊图形(待修改)

1.画圆 <!doctype html> <html><head><style>*{margin:0;padding:0;}.box{margin:50px auto;width:100px;height:100px;border-radius:50%;background:pink;}</style></head> <body><div class"box"></div> …

[vue-cli]vue-cli3你有使用过吗?它和2.x版本有什么区别?

[vue-cli]vue-cli3你有使用过吗&#xff1f;它和2.x版本有什么区别&#xff1f; Vue CLI 的包名称由 vue-cli 改成了 vue/cli vue cli 3 npm install -g vue/cli vue create hello-worldvue cli 2.x npm install -g vue-cli vue init webpack my-project个人简介 我是歌谣&am…

Makefile的介绍与使用

1 target ... : prerequisites ... //目标文件&#xff1a;所依赖的文件 2 command //该target要执行的命令&#xff08;任意的shell命令&#xff09; 3 ... 4 ... 这是一个文件的依赖关系&#xff0c;也就是说&#xff0c;target这一个或多个的目标文件依赖于pr…

第11章-img特征,vertical-align,cursor,opacity

1.img特征 2.vertical-align垂直对齐方式 与text-align对比 3.cursor指针样式 default auto pointer move text wait help 4.opacity透明度 与rgba对比 span不支持text-align属性 IE8及以下不兼容:filter:alpha(opacity0~100);

[css] pseudo-class与pseudo-element有什么区别?

[css] pseudo-class与pseudo-element有什么区别&#xff1f; 伪类表示已存在的某个元素处于某种状态&#xff0c;但是通过dom树又无法表示这种状态&#xff0c;就可以通过伪类来为其添加样式。例如a元素的:hover, :active等伪元素主要是用来创建一些不存在原有dom结构树种的元…

iotop命令

iotop命令是一个用来监视磁盘I/O使用状况的top类工具&#xff0c;iotop具有与top相似的UI&#xff0c;其中包括pid、user、I/O、进程等相关信息等&#xff1b; //iotop安装&#xff1a; yum -y install iotop //或者编译安装 wget http://guichaz.free.fr/iotop/files/iotop-0.…

[css] 行内元素可以设置padding和margin吗?

[css] 行内元素可以设置padding和margin吗&#xff1f; 行内元素的纵向padding和margin都是不考虑的&#xff0c;这是css规范定义的。 inline元素确实可以设置垂直方向的 padding 和 margin 值&#xff0c;但是 inline 元素的 margin 和 padding 的垂直方向上不产生边距效果&a…

第10章-定位、层级关系

一.定位 1.static 默认属性。块级元素→矩形框&#xff0c;行级元素→行框 2.fixed 类似于absolute&#xff0c;但包含块是视窗本身 3.relative 原本所占的空间仍保留 4.absolute 生成一个块级框&#xff0c;变成块级元素。float也是 二.层级关系 z-index

ccf_201712-2

题目 问题描述有n个小朋友围成一圈玩游戏&#xff0c;小朋友从1至n编号&#xff0c;2号小朋友坐在1号小朋友的顺时针方向&#xff0c;3号小朋友坐在2号小朋友的顺时针方向&#xff0c;……&#xff0c;1号小朋友坐在n号小朋友的顺时针方向。游戏开始&#xff0c;从1号小朋友开始…