kartik-v / yii2-dynagrid
为 Yii 2 GridView 提供个性化列、页面大小和主题,使其性能更强大。
Requires
- kartik-v/yii2-grid: >= 3.5.2
- kartik-v/yii2-krajee-base: >= 3.0.4
- kartik-v/yii2-sortable: ~1.2
- kartik-v/yii2-widget-activeform: >= 1.6.2
- kartik-v/yii2-widget-select2: >= 2.2.3
README
yii2-dynagrid
yii2-dynagrid 模块是 kartik-v/yii2-grid 模块的绝佳补充,它增强了个性化功能。它通过使网格视图动态化并针对每个用户进行个性化来加速网格视图。它允许用户设置和保存他们自己的网格配置。此模块提供的主要功能包括
- 在运行时个性化、设置和保存网格页面大小。您可以设置允许的最小和最大页面大小。
- 在运行时个性化、设置和保存网格数据过滤器。用户可以定义和保存他们自己的个性化网格数据过滤器。
- 在运行时个性化、设置和保存网格列排序。用户可以定义和保存他们自己的个性化网格列排序。
- 通过拖放个性化网格列的显示。重新排序网格列并设置所需列的可见性,并允许用户保存此设置。通过预定义的列设置控制用户可以重新排序哪些列。预先确定您的哪些期望列将默认固定在左侧或右侧。
- 个性化网格外观并设置网格主题。这将提供对网格布局的高级定制。允许用户根据您定义的主题和扩展来任意地风格网格。由于扩展使用 yii2-grid 扩展,因此它提供了所有 yii2-grid 扩展提供的样式选项,包括各种网格列增强、Bootstrap 面板和其他网格样式。这将允许您以多种方式轻松为用户设置主题。您可以在模块配置中设置多个主题,并允许用户选择其中之一。默认情况下,扩展包括一些预定义的主题,以便您开始。
- 允许您在特定于每个用户或全局级别上保存动态网格配置。实现一个
DynaGridStore
对象来独立于存储管理动态网格个性化。以下存储选项之一可用于存储个性化的网格配置- 会话存储(默认)
- Cookie 存储
- 数据库存储
- 扩展会自动验证和加载基于存储设置的保存配置。
注意:此扩展依赖于 kartik-v/yii2-grid 和 kartik-v/yii2-sortable 扩展,而这些扩展又依赖于 yiisoft/yii2-bootstrap 扩展。请查看此扩展的 composer.json 以获取此扩展的需求和依赖项。
最新版本
请参考变更日志以了解各种版本的变化详情。
- 在v1.2.0版本中,DynaGrid进行了重构,增加了
DynaGridStore
对象,并支持保存、更新或删除网格个性化设置,包括网格过滤和排序。 - 在v1.1.0版本中,DynaGrid支持Pjax。要启用Pjax处理,将
gridOptions['pjax']
属性设置为true
,并使用gridOptions['pjaxSettings']
来控制Pjax行为。
如何通过拉取请求进行贡献?
请参考贡献者的git工作流程。
演示
您可以在详细文档中查看,阅读API代码文档或查看完整演示来了解扩展的使用方法。
安装
安装此扩展的首选方式是通过composer。
注意:请检查此扩展的composer.json文件中的要求和相关依赖。阅读web提示/wiki,了解如何在您的应用composer.json中设置
minimum-stability
设置。
您可以选择运行
$ php composer.phar require kartik-v/yii2-dynagrid "@dev"
或将以下内容添加到您的composer.json
文件的require
部分。
"kartik-v/yii2-dynagrid": "@dev"
使用方法
模块
在您的Yii配置文件中设置模块,名称为dynagrid
,如下所示。此外,您还必须按照yii2-grid文档中描述的方式注册gridview
模块。
'modules'=>[ 'dynagrid'=>[ 'class'=>'\kartik\dynagrid\Module', // other settings (refer documentation) ], 'gridview'=>[ 'class'=>'\kartik\grid\Module', // other module settings ], ],
DynaGrid
DynaGrid小部件可以按以下方式渲染kartik\Grid\GridView
的个性化动态版本
use kartik\dynagrid\DynaGrid; use kartik\grid\GridView; $columns = [ ['class'=>'kartik\grid\SerialColumn', 'order'=>DynaGrid::ORDER_FIX_LEFT], 'id', 'name', [ 'attribute'=>'publish_date', 'filterType'=>GridView::FILTER_DATE, 'format'=>'raw', 'width'=>'170px', 'filterWidgetOptions'=>[ 'pluginOptions'=>['format'=>'yyyy-mm-dd'] ], ], [ 'class'=>'kartik\grid\BooleanColumn', 'attribute'=>'status', 'vAlign'=>'middle', ], [ 'class'=>'kartik\grid\ActionColumn', 'dropdown'=>false, 'order'=>DynaGrid::ORDER_FIX_RIGHT ], ['class'=>'kartik\grid\CheckboxColumn', 'order'=>DynaGrid::ORDER_FIX_RIGHT], ]; echo DynaGrid::widget([ 'columns'=>$columns, 'storage'=>DynaGrid::TYPE_COOKIE, 'theme'=>'panel-danger', 'gridOptions'=>[ 'dataProvider'=>$dataProvider, 'filterModel'=>$searchModel, 'panel'=>['heading'=>'<h3 class="panel-title">Library</h3>'], ], 'options'=>['id'=>'dynagrid-1'] // a unique identifier is important ]);
警告:如果您在网格布局中使用新的
\kartik\grid\FormulaColumn
,请务必小心。用户对列的重新排序将使您的公式无效,因为列索引将会改变。建议您将所有此类公式列及其依赖项的顺序设置为DynaGrid::ORDER_FIX_LEFT
,以便这些列的位置预先固定。
许可证
yii2-dynagrid是在BSD-3-Clause许可证下发布的。有关详情,请参阅附带文件LICENSE.md
。