PHPackages                             heyday/model-admin-filter - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Admin Panels](/categories/admin)
4. /
5. heyday/model-admin-filter

ActiveLibrary[Admin Panels](/categories/admin)

heyday/model-admin-filter
=========================

Custom filters collection for Silverstripe Model Admin GridField

3.0.0(10mo ago)04.0k[1 issues](https://github.com/WPP-Public/akqa-nz-silverstripe-model-admin-filter/issues)proprietaryPHP

Since Aug 14Pushed 10mo ago2 watchersCompare

[ Source](https://github.com/WPP-Public/akqa-nz-silverstripe-model-admin-filter)[ Packagist](https://packagist.org/packages/heyday/model-admin-filter)[ RSS](/packages/heyday-model-admin-filter/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (7)Dependencies (1)Versions (9)Used By (0)

Model Admin Filter for SilverStripe
===================================

[](#model-admin-filter-for-silverstripe)

Custom filters collection for Silverstripe Model Admin GridField.

Installation
------------

[](#installation)

For Silverstripe 5 `composer require heyday/model-admin-filter`

Quick Usage
-----------

[](#quick-usage)

Extend model admin:

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

```

In your model admin, add this function:

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

    return $list;
}

```

`getFilteredList` will return filtered list from custom filter.

Also in your model admin, add this function to add custom filter fields:

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

```

The example above will add custom filter of `dateTimeRange` which is a date time range filter of `Created` field. This filter will display record where `Created` dates and times are between selected range.

Common Field Attribute
----------------------

[](#common-field-attribute)

- `fieldName`: the DB field which will be filtered
- `fieldType` : current available fields, see [Available Filter Fields Type](#available-filter-fields-type)

Available Filter Fields Type
----------------------------

[](#available-filter-fields-type)

Range filters:

- [dateRange](#dateRange)
- [dateTimeRange](#dateTimeRange)
- [numericRange](#numericRange)

Search by Keyword filters:

- [Search By Keyword](#search-by-keyword)

### dateRange

[](#daterange)

Filter record by date range of selected date field.

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

```

Options:

- `beginTitle`: custom begin label
- `endTitle`: custom end label

### dateTimeRange

[](#datetimerange)

Filter record by date and time range of selected date field.

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

```

Options:

- `beginTitle`: custom begin label
- `endTitle`: custom end label

### numericRange

[](#numericrange)

Filter record by numeric range of selected date field.

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

```

Options:

- `beginTitle`: custom begin label
- `endTitle`: custom end label

Search By Keyword
-----------------

[](#search-by-keyword)

Filter record by keyword, add this function in model admin:

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

```

Fields To Match: `'[DBFieldName]' => '[MatchType]'`. If `MatchType` is not `PartialMatch`, Exact Match will be assumed.

Options:

- `title`: custom label

Hide Default Filters
--------------------

[](#hide-default-filters)

Sometimes we need to hide auto-generated filters, such as `$summary_fields` in `DataObject`. Add this function in model admin:

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

```

###  Health Score

38

—

LowBetter than 85% of packages

Maintenance53

Moderate activity, may be stable

Popularity20

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity60

Established project with proven stability

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~253 days

Recently: every ~441 days

Total

8

Last Release

326d ago

Major Versions

1.3.0 → 2.0.02024-01-19

2.0.0-beta-1 → 3.0.02025-06-26

### Community

Maintainers

![](https://www.gravatar.com/avatar/de4d8d61f202a03e88c3ed30cce3bfedbc6f56a16e3f3b25546c61aadc51bca2?d=identicon)[heyday](/maintainers/heyday)

---

Top Contributors

[![jack-nzl](https://avatars.githubusercontent.com/u/14326708?v=4)](https://github.com/jack-nzl "jack-nzl (4 commits)")

---

Tags

silverstripesilverstripe-4

### Embed Badge

![Health badge](/badges/heyday-model-admin-filter/health.svg)

```
[![Health](https://phpackages.com/badges/heyday-model-admin-filter/health.svg)](https://phpackages.com/packages/heyday-model-admin-filter)
```

###  Alternatives

[silverstripe/admin

SilverStripe admin interface

262.6M325](/packages/silverstripe-admin)[colymba/gridfield-bulk-editing-tools

Silverstripe CMS GridField component to upload images/files and edit records in bulk

94677.2k39](/packages/colymba-gridfield-bulk-editing-tools)[silverstripe/lumberjack

A module to make managing pages in a GridField easy without losing any of the functionality that you're used to in the CMS.

331.1M33](/packages/silverstripe-lumberjack)[silvershop/silverstripe-hasonefield

Edit a has\_one relationship using a GridField, triggered by clicking a button.

34538.8k32](/packages/silvershop-silverstripe-hasonefield)[stevie-mayhew/hasoneedit

Allows editing the fields of a has\_one object directly in the CMS

21225.4k11](/packages/stevie-mayhew-hasoneedit)[plastyk/dashboard

An extendable dashboard for Silverstripe

2243.0k2](/packages/plastyk-dashboard)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
