bupy7 / yii2-grid
此包已被废弃,不再维护。没有建议的替代包。
简单的扩展 `yii\grid\GridView`。
1.1.6
2017-06-08 20:15 UTC
Requires
- npm-asset/sortablejs: 1.4.2
- yiisoft/yii2: *
- yiisoft/yii2-bootstrap: *
README
简单的扩展 yii\grid\GridView
。
特性
- 将 GridView 包装在 Bootstrap3 面板 中。
- 能够改变页面大小。
- 具有使用自定义公式的 '总计' 列。
- 固定表头。
- 自定义模板的 GridView 标签。
- 能够实时禁用/启用/排序可见列。
- 能够调整列宽。
- 保持最后修改的页面大小。
安装
通过 composer 安装此扩展是首选方式。
运行以下命令之一:
php composer.phar require --prefer-dist bupy7/yii2-grid "*"
或添加
"bupy7/yii2-grid": "*"
到你的 composer.json
文件的 require 部分。
使用
简单使用
use bupy7\grid\GridView; echo GridView::widget([ 'dataProvider' => $dataProvider, 'filterModel' => $searchModel, 'columns' => [ ['class' => 'yii\grid\SerialColumn'], ['class' => 'yii\grid\CheckboxColumn'], 'attribute1', 'attribute2', ], ]);
添加删除按钮
添加你的视图
use bupy7\grid\GridView; $panelHeadingTemplate = <<<HTML <div class="col-md-6">{controls}</div> <div class="col-md-6 text-right">{pageSizer}</div> <div class="clearfix"></div> HTML; echo GridView::widget([ 'customTags' => [ 'controls' => $this->render('_controls'), ], 'panelHeadingTemplate' => $panelHeadingTemplate, 'dataProvider' => $dataProvider, 'filterModel' => $searchModel, 'columns' => [ ['class' => 'yii\grid\SerialColumn'], ['class' => 'yii\grid\CheckboxColumn'], 'attribute1', 'attribute2', ], ]);
添加你的 _controls
视图
<?php use yii\helpers\Html; use yii\helpers\Json; ?> <?= Html::a(Yii::t('app', 'DELETE'), ['delete'], [ 'id' => 'all-delete', 'class' => 'btn btn-danger', 'title' => Yii::t('app', 'DELETE'), ]); ?> <?php $message = Json::encode(Yii::t('app', 'CONFIRM_DELETE_SELECTED_ITEMS')); $js = <<<JS var grid = $('#all-delete').closest('.grid-view'); $('#all-delete').on('click', function() { th = $(this); yii.confirm($message, function() { $.post(th.attr('href'), {ids: grid.yiiGridView('getSelectedRows')}); }); return false; }); JS; $this->registerJs($js);
添加你的控制器
public function actionDelete($id = null) { if ($id === null) { $ids = (array)Yii::$app->request->post('ids'); } else { $ids = (array)$id; } for ($i = 0; $i != count($ids); $i++) { $this->findModel($ids[$i])->delete(); } return $this->redirect(['index']); }
添加更改可见列的能力
通过会话
覆盖会话组件
use bupy7\grid\interfaces\StorageInterface; /** * @inheritdoc */ class Session extends \yii\web\Session implements StorageInterface { }
添加你的应用程序配置
'components' => [ 'gridManager' => [ 'class' => 'bupy7\grid\components\Manager', 'storage' => 'session', ], ]
添加你的控制器
use bupy7\grid\actions\VisibleColumnsAction; use yii\helpers\Url; public function actions() { return parent::actions() + [ 'visible-columns' => [ 'class' => VisibleColumnsAction::className(), 'gridId' => 'example-grid', ], ]; } public function actionIndex() { Url::remember(); $searchModel = new ExampleSearch(); $dataProvider = $searchModel->search(Yii::$app->request->queryParams); $visibleColumns = Yii::$app->gridManager->getVisibleColumns('example-grid'); if ($visibleColumns === false) { $visibleColumns = array_keys($searchModel->gridColumnsList()); } return $this->render('index', [ 'searchModel' => $searchModel, 'dataProvider' => $dataProvider, 'visibleColumns' => $visibleColumns, ]); }
添加你的搜索模型
public function gridColumnsList() { return [ 'attribute1' => 'Label of attribute1', 'attribute2' => 'Label of attribute2', ]; }
添加你的视图
use bupy7\grid\GridView; $panelHeadingTemplate = <<<HTML <div class="col-md-6">{controls}</div> <div class="col-md-6 text-right">{pageSizer}</div> <div class="clearfix"></div> HTML; echo GridView::widget([ 'customTags' => [ 'controls' => $this->render('_controls', [ 'visibleColumns' => $visibleColumns, 'searchModel' => $searchModel, ]), ], 'panelHeadingTemplate' => $panelHeadingTemplate, 'dataProvider' => $dataProvider, 'filterModel' => $searchModel, 'visibleColumns' => $visibleColumns, 'columns' => [ ['class' => 'yii\grid\SerialColumn'], 'attribute1', 'attribute2', ], ]);
添加你的 _controls
视图
use bupy7\grid\widgets\VisibleColumnsWidget; <?= VisibleColumnsWidget::widget([ 'gridId' => 'example-grid', 'modalOptions' => [ 'header' => Yii::t('app', 'SELECT_COLUMNS'), 'toggleButton' => [ 'label' => Yii::t('app', 'SELECT_COLUMNS'), 'class' => 'btn btn-default', ], ], 'actionForm' => ['visible-columns'], 'submitBtnLabel' => Yii::t('app', 'APPLY'), 'columnsList' => $searchModel->gridColumnsList(), ]); ?>
添加调整列宽的能力
通过会话
覆盖会话组件
use bupy7\grid\interfaces\StorageInterface; /** * @inheritdoc */ class Session extends \yii\web\Session implements StorageInterface { }
添加你的应用程序配置
'components' => [ 'gridManager' => [ 'class' => 'bupy7\grid\components\Manager', 'storage' => 'session', ], ]
添加你的控制器
use bupy7\grid\actions\ResizableColumnsAction; use yii\helpers\Url; public function actions() { return parent::actions() + [ 'resizable-columns' => [ 'class' => ResizableColumnsAction::className(), 'gridId' => 'example-grid', ], ]; } public function actionIndex() { Url::remember(); $searchModel = new ExampleSearch(); $dataProvider = $searchModel->search(Yii::$app->request->queryParams); $resizableColumns = Yii::$app->gridManager->getResizableColumns('example-grid'); return $this->render('index', [ 'searchModel' => $searchModel, 'dataProvider' => $dataProvider, 'resizableColumns' => $resizableColumns, 'resizableColumnsUrl' => ['resizable-columns'], ]); }
添加你的视图
use bupy7\grid\GridView; echo GridView::widget([ 'resizableColumns' => $resizableColumns, 'resizableColumnsUrl' => $resizableColumnsUrl, 'dataProvider' => $dataProvider, 'filterModel' => $searchModel, 'columns' => [ ['class' => 'yii\grid\SerialColumn'], 'attribute1', 'attribute2', ], ]);
添加显示网格中所有行的能力
echo GridView::widget([ ... 'pageSizer' => [ 'availableSizes' => [20 => '20', 50 => '50', 100 => '100', -1 => Yii::t('app', 'ALL_PAGES')], ], ... ]);
并在你的模型中更改 $pageSizeLimit
$dataProvider = new ActiveDataProvider([ 'query' => $query, 'pagination' => [ 'pageSizeLimit' => [-1, 100], ], ]);
更多关于 bupy7\grid\LinkPageSizer
的信息。
添加网格的总计列
添加了求和总计
[ 'class' => 'bupy7\grid\TotalColumn', 'format' => 'currency', 'attribute' => 'total_cost', ]
更多关于 bupy7\grid\TotalColumn
的信息。
更多关于 GridView
的信息在 bupy7\grid\GridView
。
保持最后修改的页面大小
默认情况下此功能是禁用的。
echo GridView::widget([ ... 'id' => 'unique-id-of-this-grid', 'keepPageSizer' => true, ... ]);
您需要指定 id
作为唯一的才能正确工作。
id
和options[id]
- 不相同!id
是小部件的标识符,而options[id]
是网格视图的 HTML 标识符。
##许可证
yii2-grid 根据 BSD 3-Clause 许可证发布。