承接 fromholdio/silverstripe-gridfield-limiter 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

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

fromholdio/silverstripe-gridfield-limiter

Composer 安装命令:

composer require fromholdio/silverstripe-gridfield-limiter

包简介

Limit number of records that can be added to a SilverStripe GridField

README 文档

README

Small module to limit number of records that can be added to a SilverStripe GridField.

Important - this module does not prevent records being added at an ORM/code-level in any way.

Instead, it manipulates the GridField UI to allow developers to hide controls like GridFieldAddNewButton once a set limit is reached, preventing CMS users from adding more records via that grid field.

  • It hides GridFieldAddNewButton, GridFieldAddExistingAutocompleter and other GridFieldComponents you define, if the limit is reached
  • Optionally, if limit has been reached, a message is also presented to the user notifying them of this

Requirements

SilverStripe 5+

Installation

composer require fromholdio/silverstripe-gridfield-limiter

Detail

  • Add GridFieldLimiter to your GridFieldConfig, and define a target fragment (defaults to before)
  • It will create two new target fragments, limiter-before-left and limiter-before-right (before comes from the defined target fragment)
  • You can now fill these two fragments with grid field components, like a GridFieldAddNewButton on the left and a GridFieldAddExistingAutocompleter on the right, which will all be hidden (via css) from the CMS user once the grid field reaches its row limit
  • If enabled, a message will be displayed to the user telling them to remove an item before they add a new one

Per the note above, this does not in anyway validate the number of objects in a relationship or prevent an object being added - it's just a cheeky way to implement a limit for CMS users managing a grid field.

Under-limit screenshot

Under limit

Limit-reached screenshot

Limit reached

Usage example

We have a standard GridField using a GridFieldConfig_RecordEditor and will add a limit to it.

$gridField = GridField::create(
    'Widgets',
    'Widgets',
    $this->Widgets(),
    $gridConfig = GridFieldConfig_RecordEditor::create()
);

Remove the GridFieldAddNewButton in preparation to add one within our GridFieldLimiter:

$gridConfig->removeComponentsByType(GridFieldAddNewButton::class);

Add the GridFieldLimiter

$limit = 4;  // We want to limit this gridfield to 4 objects
$targetFragment = 'before' // Set gridfield target fragment value
$showLimitReachedMessage = true // We want to show the user a note when the limit is reached

$gridConfig->addComponent(
    new GridFieldLimiter($limit, $targetFragment, $showLimitReachedMessage)
);

Add a GridFieldAddNewButton (and/or any other components) you would like displayed while under limit but hidden when limit is reached, using the limiter target fragment.

$gridConfig->addComponent(
    new GridFieldAddNewButton('limiter-before-left')
);

That should work!

$fields->addFieldToTab('Root.Testing', $gridField);

fromholdio/silverstripe-gridfield-limiter 适用场景与选型建议

fromholdio/silverstripe-gridfield-limiter 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 43.6k 次下载、GitHub Stars 达 5, 最近一次更新时间为 2019 年 02 月 17 日, 在 PHP 生态内属于活跃度较高的组件。

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

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

围绕 fromholdio/silverstripe-gridfield-limiter 我们能提供哪些服务?
定制开发 / 二次开发

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

BUG 修复 & 性能优化

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

项目外包 & 长期维护

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

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

统计信息

  • 总下载量: 43.6k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 5
  • 点击次数: 9
  • 依赖项目数: 2
  • 推荐数: 0

GitHub 信息

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

其他信息

  • 授权协议: BSD-3-Clause
  • 更新时间: 2019-02-17