pozitronik/yii2-grid-config

Configurable grids for YII2

Installs: 3 330

Dependents: 1

Suggesters: 0

Security: 0

Stars: 0

Watchers: 1

Forks: 3

Open Issues: 1

Type:yii2-extension

1.0.4 2022-06-07 19:06 UTC

This package is auto-updated.

Last update: 2022-08-06 11:32:31 UTC


README

Конфигурирование GridView с сохранением настроек каждого пользователя.

GitHub Workflow Status

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' => [
            'saveUrl' => '/my-controller-id/my-save-action', /* Адрес постинга применяемых настроек (например, если вы решили переопределить контроллер модуля своим) */
            'maxPageSize' => 20, /* Лимит разрешённого количества элементов на одну страницу (может быть переопределён в конфигурации каждого отдельного GridConfig::widget) */
            'defaultGridParams' => [] /* Произвольный набор параметров, подставляемый во все гриды, обслуживаемые виджетом. Параметр никак не проверяется, просто вставляется в конфиг. */
        ]
    ]
]

Изменение layout GridView

Для базового yii\grid\GridView модуль модифицирует свойство $layout, добавляя к нему отрендеренную кнопку вызова модального окна с настройками. Её расположение изменить нельзя.

Для kartik\grid\GridView модуль добавляет тег {options}, при рендеринге виджета заменяемый на кнопку вызова модального окна с настройками. Этот тег можно использовать в свойстве $layout стандартным способом. По умолчанию он добавляется к $layout автоматически.