https://github.com/pozitronik/yii2-grid-config
Configurable grids for YII2
https://github.com/pozitronik/yii2-grid-config
Last synced: 7 months ago
JSON representation
Configurable grids for YII2
- Host: GitHub
- URL: https://github.com/pozitronik/yii2-grid-config
- Owner: pozitronik
- Created: 2021-03-25T09:52:16.000Z (about 4 years ago)
- Default Branch: master
- Last Pushed: 2024-01-10T07:50:09.000Z (over 1 year ago)
- Last Synced: 2024-11-07T01:08:16.258Z (7 months ago)
- Language: PHP
- Size: 172 KB
- Stars: 0
- Watchers: 2
- Forks: 5
- Open Issues: 1
-
Metadata Files:
- Readme: README.MD
Awesome Lists containing this project
README
GridConfig
==========
Конфигурирование GridView с сохранением настроек каждого пользователя.[](https://github.com/pozitronik/yii2-grid-config/actions)
Installation
------------The preferred way to install this extension is through [composer](http://getcomposer.org/download/).
Run
```
php composer.phar require pozitronik/yii2-grid-config "dev-master"
```or add
```
"pozitronik/yii2-grid-config": "dev-master"
```to the require section of your `composer.json` file.
Requirements
------------Yii2,
PHP >= 7.4.0Описание и использование
------------------------Идея модуля в том, чтобы позволить в рантайме конфигурировать *любой* экземпляр GridView, сохранить
конфигурацию и применить её при следующем рендере GridView.
Это достигается тем, что вместо```php
GridView::widget([
...
]);
```вызывается
```php
GridConfig::widget([
'grid' => GridView::begin([//<==обратите внимание, нужно использовать именно ::begin() а не ::widget()
...
])
]);
```а модуль инжектирует в GridView панель конфигурации и всю обвязку.
Для того, чтобы связать сохраняемые настройки с определённым GridView, потребуется вручную задать
идентификатор виджету. Это можно сделать, определив параметр `id` либо для GridView, либо для GridConfig:```php
GridConfig::widget([
'id' => 'users-grid',//<==так
'grid' => GridView::begin([
'id' => 'users-grid',//<==либо так
...
])
]);
```Этого достаточно, чтобы всё заработало.
Настраивать можно набор скрытых/отображаемых колонок, их порядок, пажинацию (количество отображаемых на одной
странице записей), наличие плавающего заголовка и плавающего блока с основной информации (если это поддерживает класс GridView).Поддерживаются как `yii\grid\GridView`, так и все наследуемые расширения, в т.ч. `kartik\grid\GridView`.
Версии Bootstrap
----------------Модуль поддерживает Bootstrap третьей (по умолчанию) и четвёртой версий. Переключение между версиями задаётся
через параметр `Yii::$app->params->bsVersion`.```php
'params' => [
'bsVersion' => '3'//или '4'
]
```Конфигурация
------------Для хранения персональных настроек модуль опирается на
расширение [pozitronik/yii2-users-options](https://github.com/pozitronik/yii2-users-options). После установки
может потребоваться конфигурация этого расширения согласно документации и применение миграции:`yii migrate --migrationPath=@vendor/pozitronik/yii2-users-options/migrations`
Конфигурация модуля GridConfig в базовом случае сводится к его подключению в web.php:
```php
'modules' => [
'gridconfig' => [
'class' => GridConfigModule::class
]
]
```Другие настройки модуля:
```php
'modules' => [
'gridconfig' => [
'class' => GridConfigModule::class,
'params' => [
'viewPath' => null, /* Если задано, позволяет указать путь к каталогу шаблонов, используемых виджетом (структура аналогична /src/views/) */
'saveUrl' => '/my-controller-id/my-save-action', /* Адрес постинга применяемых настроек (например, если вы решили переопределить контроллер модуля своим) */
'minPageSize' => 1, /* Минимальное разрешенное количество элементов на одну страницу (может быть переопределено в конфигурации каждого отдельного GridConfig::widget) */
'maxPageSize' => 20, /* Лимит разрешённого количества элементов на одну страницу (может быть переопределён в конфигурации каждого отдельного GridConfig::widget) */
'defaultGridParams' => [] /* Произвольный набор параметров, подставляемый во все гриды, обслуживаемые виджетом. Параметр никак не проверяется, просто вставляется в конфиг. */
]
]
]
```Порядок применения настроек грида, по увеличению приоритета:
- Глобальные настройки из `defaultGridParams`,
- Параметры, переданные при вызове виджета,
- Установленные пользователем настройки.```php
'modules' => [
'gridconfig' => [
'class' => GridConfigModule::class,
'params' => [
'defaultGridParams' => [
'filterOnFocusOut' => true
]
]
]
]
```включит фильтрацию по изменению фокуса для всех вызовов GridConfig. Переданный
параметр `'filterOnFocusOut' => false````php
= GridConfig::widget([
'id' => $id,
'filterOnFocusOut' => false,
...
]);
?>
```имеет больший приоритет, и перекроет глобальную настройку.
Настройка, которую установит себе пользователь имеет самый высший приоритет.Плавающий заголовок:
При включении плавающего заголовка или плавающего блока с основной информацией (если это поддерживает класс GridView)
автоматически задается высота блока в свойстве грида containerOptions. Значение можно переопределить.Изменение layout GridView
-------------------------Для базового `yii\grid\GridView` модуль модифицирует свойство $layout, добавляя к нему отрендеренную кнопку
вызова модального окна с настройками. Её расположение изменить нельзя.Для `kartik\grid\GridView` модуль добавляет тег {options}, при рендеринге виджета заменяемый на кнопку вызова
модального окна с настройками. Этот тег можно использовать в свойстве $layout стандартным способом. По
умолчанию он добавляется к $layout автоматически.