heyday/model-admin-filter

为 Silverstripe Model Admin GridField 定制的过滤器集合

2.0.0 2024-01-19 01:49 UTC

This package is auto-updated.

Last update: 2024-08-25 23:08:35 UTC


README

为 Silverstripe Model Admin GridField 定制的过滤器集合。

安装

对于 Silverstripe 5,请使用命令 composer require heyday/model-admin-filter

快速使用

扩展模型管理器

MyProject\ModelAdmin\MyAdmin:
    extensions:
        - Heyday\ModelAdminFilter\FilterExtension

在你的模型管理器中添加此功能

/**
 * {@inheritdoc}
 */
public function getList()
{
    $list = parent::getList();
    $list = $this->getFilteredList($list);

    return $list;
}

getFilteredList 将返回来自自定义过滤器的筛选列表。

同样,在你的模型管理器中添加此功能以添加自定义过滤器字段

/**
 * List of ModelAdminFilter custom fields
 */
public function extraFilterFields(): array
{
    return [
        [
            'fieldName' => 'Created',
            'fieldType' => 'dateTimeRange',
            'options' => [
                'beginTitle' => 'Create Date Begin',
                'endTitle' => 'Create Date End'
            ]
        ]
    ];
}

上面的示例将添加一个名为 dateTimeRange 的自定义过滤器,这是一个 Created 字段的日期时间范围过滤器。此过滤器将显示记录,其中 Created 日期和时间在所选范围内。

常用字段属性

可用的过滤器字段类型

范围过滤器

按关键字搜索过滤器

dateRange

根据所选日期字段的日期范围筛选记录。

[
    'fieldName' => 'Created',
    'fieldType' => 'dateRange',
    'options' => [
        'beginTitle' => 'Create Date From',
        'endTitle' => 'Create Date To'
    ]
]

选项

  • beginTitle:自定义开始标签
  • endTitle:自定义结束标签

dateTimeRange

根据所选日期字段的日期和时间范围筛选记录。

[
    'fieldName' => 'Created',
    'fieldType' => 'dateTimeRange',
    'options' => [
        'beginTitle' => 'Create Time From',
        'endTitle' => 'Create Time To'
    ]
]

选项

  • beginTitle:自定义开始标签
  • endTitle:自定义结束标签

numericRange

根据所选日期字段的数值范围筛选记录。

[
    'fieldName' => 'Weight',
    'fieldType' => 'numericRange',
    'options' => [
        'beginTitle' => 'Weight From',
        'endTitle' => 'Weight To'
    ]
]

选项

  • beginTitle:自定义开始标签
  • endTitle:自定义结束标签

按关键字搜索

根据关键字筛选记录,在模型管理器中添加此功能

/**
 * List of fields filtered by keyword
 */
public function keywordSearchFilter(): array
{
    return [
        'fieldsToMatch' => [
            'FirstName' => 'PartialMatch',
            'LastName' => 'PartialMatch',
        ],
        'options' => [
            'title' => 'Search Exactly',
        ],
    ];
}

匹配字段:'[DBFieldName]' => '[MatchType]'。如果 MatchType 不是 PartialMatch,则假定是精确匹配。

选项

  • title:自定义标签

隐藏默认过滤器

有时我们需要隐藏自动生成的过滤器,例如 DataObject 中的 $summary_fields。在模型管理器中添加此功能

/**
 * Hide default filters of data objects
 */
public function hideDefaultFilters(): bool
{
    return true;
}