项目过程中遇到一个这样的需求,想要在表格页面(GridView所在页)直接修改数据。在yiiframework.com进行一番探索,发现了yii2-editable插件。通过github搜索发现了N款yii2-editable插件。我们挑选综合排名前三个进行试用。
1.kartik-v/yii2-editable
项目github地址:https://github.com/kartik-v/yii2-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
项目文档地址:https://github.com/2amigos/yii2-editable-widget#x-editable-widget-for-yii2
开源协议:The BSD License (BSD).
优点
- 作者是团队
- 良好的单元测试提供
- 数据形式多样缺点
- 没完善的文档
总结
以上三款插件除官方推荐插件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作出的贡献。
文章评论