heyday / model-admin-filter
为 Silverstripe Model Admin GridField 定制的过滤器集合
2.0.0
2024-01-19 01:49 UTC
Requires
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 日期和时间在所选范围内。
常用字段属性
fieldName:要过滤的数据库字段fieldType:当前可用的字段,请参阅可用的过滤器字段类型
可用的过滤器字段类型
范围过滤器
按关键字搜索过滤器
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;
}