PHPackages                             i-lateral/silverstripe-filterable - 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. [Search &amp; Filtering](/categories/search)
4. /
5. i-lateral/silverstripe-filterable

ActiveSilverstripe-module[Search &amp; Filtering](/categories/search)

i-lateral/silverstripe-filterable
=================================

Silverstripe module allowing creation of custom filters through the admin interface and then assigning to an object.

4653[2 PRs](https://github.com/i-lateral/silverstripe-filterable/pulls)PHP

Since May 24Pushed 4y ago3 watchersCompare

[ Source](https://github.com/i-lateral/silverstripe-filterable)[ Packagist](https://packagist.org/packages/i-lateral/silverstripe-filterable)[ RSS](/packages/i-lateral-silverstripe-filterable/feed)WikiDiscussions master Synced today

READMEChangelogDependenciesVersions (1)Used By (0)

Silverstripe Filterable
=======================

[](#silverstripe-filterable)

Module to allow creation of "Filters" that can be mapped to data objects.

The idea is that we then add ability to render these filters to front end templates and (eventually) add them to search results.

At the moment, only the backend mapping is supported by the module, front-end support comming soon...

Author
------

[](#author)

This module is created and maintained by [ilateral](http://www.i-lateral.com)

Contact:

Dependancies
------------

[](#dependancies)

- SilverStripe Framework 3.1.x
- [Grid Field Extensions](https://github.com/ajshort/silverstripe-gridfieldextensions)

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

[](#installation)

Install this module either by downloading and adding to:

\[silverstripe-root\]/filterable

Then run: dev/build/?flush=all

Or alternativly add to your project's composer.json

Usage
-----

[](#usage)

Once installed, you can setup filters via the "Filters" tab in the CMS.

### Mapping to objects

[](#mapping-to-objects)

To be able to add filters to your objects, add the following to your \_config.php

```
Filterable::add("YourObjectName", "RelationName");

```

- YourObjectName is the name of the object you want to add filters to.
- RelationName is the name of the relation added to the FilterOption object (for example, "Products").

### Filtering on a controller

[](#filtering-on-a-controller)

To be able to see a list of filtered objects from a controller, you need to add *FilterableController* to your controller classes. You can do this in either of the standard ways:

Via config.yml

```
YourController:
  extensions:
    - FilterableController

```

Via \_config.php

```
YouController::add_extension("FilterableController");

```

Once a controller has been extended, it gains access to a "FilterMenu" and a "filterby" action.

### Filter Menu

[](#filter-menu)

The Filter Menu can be loaded into a template using the template variable:

```
$FilterMenu

```

This generates a menu of available filters and options

### Filter By

[](#filter-by)

The "filterby" action returns a result set of objects, based on the relations you stipulate via *Filterable::add()*.

These results are rendered into a template, you can overwrite this template in several ways.

1. Create a template called *YourClassName\_filterby.ss* in your Layout This will allow you to create several different styled filters, depending on the controller.
2. Create a template called *FilterBy.ss* in your Layout directory.

###  Health Score

20

—

LowBetter than 14% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity15

Limited adoption so far

Community10

Small or concentrated contributor base

Maturity29

Early-stage or recently created project

 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.

### Community

Maintainers

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

---

Top Contributors

[![mlewis-everley](https://avatars.githubusercontent.com/u/687143?v=4)](https://github.com/mlewis-everley "mlewis-everley (16 commits)")

### Embed Badge

![Health badge](/badges/i-lateral-silverstripe-filterable/health.svg)

```
[![Health](https://phpackages.com/badges/i-lateral-silverstripe-filterable/health.svg)](https://phpackages.com/packages/i-lateral-silverstripe-filterable)
```

###  Alternatives

[ruflin/elastica

Elasticsearch Client

2.3k50.4M202](/packages/ruflin-elastica)[opensearch-project/opensearch-php

PHP Client for OpenSearch

15024.3M64](/packages/opensearch-project-opensearch-php)[mailerlite/laravel-elasticsearch

An easy way to use the official PHP ElasticSearch client in your Laravel applications.

934529.3k2](/packages/mailerlite-laravel-elasticsearch)[massive/search-bundle

Massive Search Bundle

721.4M13](/packages/massive-search-bundle)[shyim/opensearch-php-dsl

OpenSearch/Elasticsearch DSL library

175.9M9](/packages/shyim-opensearch-php-dsl)[outl1ne/nova-multiselect-filter

Multiselect filter for Laravel Nova.

45802.7k3](/packages/outl1ne-nova-multiselect-filter)

PHPackages © 2026

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