logo头像

Hello World

Yii2-Editable插件【GridView编辑】

项目过程中遇到一个这样的需求,想要在表格页面(GridView所在页)直接修改数据。在yiiframework.com进行一番探索,发现了yii2-editable插件。通过github搜索发现了N款yii2-editable插件。我们挑选综合排名前三个进行试用。

1.kartik-v/yii2-editable

  • 项目github地址:https://github.com/kartik-v/yii2-editable

  • 项目文档地址:http://demos.krajee.com/editable

  • 开源协议:BSD-3-Clause license

  • 优点

    • Star最多
    • 国内有教程介绍该插件(讲解不细)
    • 文档,演示比较完善
    • 有两种样式,【按钮式,Link式】点击修改数据
    • 数据形式多样【DatePicker、textarea、select等等】
  • 缺点

    • 依赖于其它项目:如果要在GridView上使用该插件,需安装kartik-v/yii2-grid。或者使用
      1
      2
      3
      'value'=>function($model){
      return \kartik\editable\Editable::widget([]);
      }

    的形式。这种形式需要改写controller,要写的内容较多。

    • 保存按钮很怪。保存按钮是一个下载图标。。

    具体使用介绍后续完善。//TODO

2.yii2mod/yii2-editable

  • 项目github地址:https://github.com/yii2mod/yii2-editable

  • 项目文档地址:https://github.com/yii2mod/yii2-editable#yii2-editable-widget

  • 开源协议:MIT license

  • 优点

    • 简单易用,使用简单方便
      1.在view层GirdView里需要的字段改写成如下代码。

      1
      2
      3
      4
      5
      [
      'class'=>EditableColumn::class,//Editable字段类
      'attribute' => 'name',//字段名称
      'url' => ['change-name'],//路由参数
      ],

      2.在Controller里actions方法里加入如下代码:

      1
      2
      3
      4
      5
      $actions=parent::actions();
      $actions['change-name']=[
         'class' => EditableAction::class,//EditableAction类
         'modelClass' => User::class,//数据model类
       ];
  • 缺点

    • 没完善的文档

3.2amigos/yii2-editable-widget

总结

以上三款插件除官方推荐插件kartik-v/yii2-editable外,其余两个插件都是基于x-editable外部Jquery组件制作的。

因此kartik-v/yii2-editable的文档比较完善
(PS.稍微有点乱,也可能是我看到一片一片的英文产生的感觉。。)

而其它两个插件的文档只能通过阅读X-Editable文档进行更多定制。

不过可以根据项目大小选择适合的项目

如果项目不是很大,这样的需求较弱,建议使用yii2mod/yii2-editable插件,因为其小巧精致,使用简单。如果项目已经完成,再改写起来,使用该插件较为方便。并且可以很方便的在GridView上改写使用。

如果该需求较强,建议使用kartik-v和2amigos的项目。这俩项目在单独的插件形式使用上,功能比较多。

这三款插件都是Yii2插件常见的贡献者。尤其是kartik-v和2amigos团队。感谢他们对Yii2作出的贡献。

上一篇