pozitronik/yii2-grid-config 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

pozitronik/yii2-grid-config

Composer 安装命令:

composer require pozitronik/yii2-grid-config

包简介

Configurable grids for YII2

README 文档

README

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

Build 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' => [
            '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 автоматически.

pozitronik/yii2-grid-config 适用场景与选型建议

pozitronik/yii2-grid-config 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 4.19k 次下载、GitHub Stars 达 1, 最近一次更新时间为 2021 年 03 月 25 日, 在 PHP 生态内属于活跃度较高的组件。

它主要适用于以下技术方向: 「extension」 「grid」 「widget」 「yii2」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。

我们在过去多个企业项目中使用过 pozitronik/yii2-grid-config 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 pozitronik/yii2-grid-config 我们能提供哪些服务?
定制开发 / 二次开发

基于 pozitronik/yii2-grid-config 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 4.19k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 1
  • 点击次数: 0
  • 依赖项目数: 1
  • 推荐数: 0

GitHub 信息

  • Stars: 1
  • Watchers: 1
  • Forks: 5
  • 开发语言: PHP

其他信息

  • 授权协议: GPL-3.0-or-later
  • 更新时间: 2021-03-25