pozitronik / yii2-grid-config
Configurable grids for YII2
Installs: 3 573
Dependents: 1
Suggesters: 0
Security: 0
Stars: 0
Watchers: 2
Forks: 5
Open Issues: 1
Type:yii2-extension
Requires
- php: >=8.0
- kartik-v/yii2-sortable: dev-master
- kartik-v/yii2-widget-switchinput: dev-master
- pozitronik/yii2-traits: ^1.0.0
- pozitronik/yii2-users-options: ^2.0.0
Requires (Dev)
- codeception/codeception: ^4.1
- codeception/module-asserts: ^1.3
- codeception/module-cli: dev-master
- codeception/module-db: ^1.1
- codeception/module-filesystem: ^1.0
- codeception/module-phpbrowser: ^1.0.0
- codeception/module-rest: ^1.3.1
- codeception/module-yii2: ^1.1
- phpunit/phpunit: ^9.5
- vlucas/phpdotenv: ^5.4.1
- yiisoft/yii2: dev-master
- yiisoft/yii2-bootstrap: dev-master
- yiisoft/yii2-bootstrap4: ~2.0.10
Suggests
- yiisoft/yii2-bootstrap: for yii2-grid-config extensions to work with Bootstrap 3.x version
- yiisoft/yii2-bootstrap4: for yii2-grid-config to work with Bootstrap 4.x version
README
Конфигурирование GridView с сохранением настроек каждого пользователя.
Installation
The preferred way to install this extension is through composer.
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. Это достигается тем, что вместо
GridView::widget([ ... ]);
вызывается
GridConfig::widget([ 'grid' => GridView::begin([//<==обратите внимание, нужно использовать именно ::begin() а не ::widget() ... ]) ]);
а модуль инжектирует в GridView панель конфигурации и всю обвязку.
Для того, чтобы связать сохраняемые настройки с определённым GridView, потребуется вручную задать
идентификатор виджету. Это можно сделать, определив параметр id
либо для GridView, либо для GridConfig:
GridConfig::widget([ 'id' => 'users-grid',//<==так 'grid' => GridView::begin([ 'id' => 'users-grid',//<==либо так ... ]) ]);
Этого достаточно, чтобы всё заработало.
Настраивать можно набор скрытых/отображаемых колонок, их порядок, пажинацию (количество отображаемых на одной странице записей), наличие плавающего заголовка и плавающего блока с основной информации (если это поддерживает класс GridView).
Поддерживаются как yii\grid\GridView
, так и все наследуемые расширения, в т.ч. kartik\grid\GridView
.
Версии Bootstrap
Модуль поддерживает Bootstrap третьей (по умолчанию) и четвёртой версий. Переключение между версиями задаётся
через параметр Yii::$app->params->bsVersion
.
'params' => [ 'bsVersion' => '3'//или '4' ]
Конфигурация
Для хранения персональных настроек модуль опирается на расширение pozitronik/yii2-users-options. После установки может потребоваться конфигурация этого расширения согласно документации и применение миграции:
yii migrate --migrationPath=@vendor/pozitronik/yii2-users-options/migrations
Конфигурация модуля GridConfig в базовом случае сводится к его подключению в web.php:
'modules' => [ 'gridconfig' => [ 'class' => GridConfigModule::class ] ]
Другие настройки модуля:
'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
, - Параметры, переданные при вызове виджета,
- Установленные пользователем настройки.
'modules' => [ 'gridconfig' => [ 'class' => GridConfigModule::class, 'params' => [ 'defaultGridParams' => [ 'filterOnFocusOut' => true ] ] ] ]
включит фильтрацию по изменению фокуса для всех вызовов GridConfig. Переданный
параметр 'filterOnFocusOut' => false
<?= GridConfig::widget([ 'id' => $id, 'filterOnFocusOut' => false, ... ]); ?>
имеет больший приоритет, и перекроет глобальную настройку. Настройка, которую установит себе пользователь имеет самый высший приоритет.
Плавающий заголовок:
При включении плавающего заголовка или плавающего блока с основной информацией (если это поддерживает класс GridView) автоматически задается высота блока в свойстве грида containerOptions. Значение можно переопределить.
Изменение layout GridView
Для базового yii\grid\GridView
модуль модифицирует свойство $layout, добавляя к нему отрендеренную кнопку
вызова модального окна с настройками. Её расположение изменить нельзя.
Для kartik\grid\GridView
модуль добавляет тег {options}, при рендеринге виджета заменяемый на кнопку вызова
модального окна с настройками. Этот тег можно использовать в свойстве $layout стандартным способом. По
умолчанию он добавляется к $layout автоматически.