PHPackages                             toplan/filter-manager - 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. toplan/filter-manager

ActiveLibrary[Search &amp; Filtering](/categories/search)

toplan/filter-manager
=====================

Filter manager package for product list,elegant generate url.

1.0.4(9y ago)788559[1 issues](https://github.com/toplan/FilterManager/issues)PHPPHP &gt;=5.4.0

Since Jan 8Pushed 9y ago7 watchersCompare

[ Source](https://github.com/toplan/FilterManager)[ Packagist](https://packagist.org/packages/toplan/filter-manager)[ RSS](/packages/toplan-filter-manager/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (5)DependenciesVersions (5)Used By (0)

Intro
=====

[](#intro)

A filter manager package for the product list filter, help you elegant generate filter url.

**[中文文档](https://github.com/toplan/FilterManager/blob/master/README_CN.md)**

[![demo image](fm-demo2.png)](fm-demo2.png)

Install
=======

[](#install)

```
composer require 'toplan/filter-manager:~1.0.4'
```

Usage
=====

[](#usage)

### 1. The preparatory work

[](#1-the-preparatory-work)

```
require 'path/to/vendor/autoload.php';
use Toplan\FilterManager\FilterManager as FilterManager;

// params
$paramsArray = [
    'paramName' => 'value',
    ...
]

// create instance by yourself.
$fm = FilterManager::create($paramsArray)->setBlackList(['page']);

//then, render `$fm` value to your template!
```

**Or used in laravel just like this:**

Find the providers key in config/app.php and register the FilterManger Service Provider.

```
    'providers' => array(
        Toplan\FilterManager\FilterManagerServiceProvider::class,
    )
```

Find the aliases key in config/app.php.

```
    'aliases' => array(
        'FilterManager' => Toplan\FilterManager\Facades\FilterManager::class,
    )
```

### 2. Just enjoy it

[](#2-just-enjoy-it)

use value `$fm` in template:

```

  All

  Male

  Female

```

or use laravel facade value `FilterManager` in template:

```

  All

  Male

  Female

```

API
===

[](#api)

### create(array $filters, $baseUrl, $blackList)

[](#createarray-filters-baseurl-blacklist)

create a instance.

- `$filters`: this is filters data, required, exp:\['gender'=&gt;'male', 'city'=&gt;'beijing'\]
- `$baseUrl`: default value is empty string.
- `$blackList`: this is blacklist for filters, default value is `[]`, exp:\['pageindex'\].

### setBlackList(array $list)

[](#setblacklistarray-list)

set black list for filter.

example:

```
$fm->setBlackList(['page', 'pageindex']);
//or in laravel
FilterManager::setBlackList(['page', 'pageindex']);
```

### has($filterName)

[](#hasfiltername)

whether has the character filter, if true will return the value, if don`t return false.

example:

```
$value = $fm->has('gender');

//or in laravel
$value = FilterManager::has('gender');
```

### isActive($filterName, $filterValue, $trueReturn, $falseReturn)

[](#isactivefiltername-filtervalue-truereturn-falsereturn)

example:

```
//in laravel
FilterManager::isActive('gender', 'male');//this will return true or false;

FilterManager::isActive('gender', 'male', 'active', '');//this will return 'active' or '';
```

### url($filterName, $filterValue, $multi, $linkageRemoveFilters, $blackList)

[](#urlfiltername-filtervalue-multi-linkageremovefilters-blacklist)

One filter has some values, and every value has a url, this method return a full url string.

- `$filterName`: param name, required.
- `$filterValue`: param value, default value is `FM_SELECT_ALL`.
- `$multi`: whether to support multiple values? `false` or `true`, default value is `false`.
- `$linkageRemoveFilters`：linkage remove the other filter, default value is `[]`.
- `$blackList`: temporary blacklist, default value is `[]`.

example:

```
//in laravel
FilterManager::url('gender', FM_SELECT_ALL);//without gender param

FilterManager::url('gender', 'male', false);//single value

FilterManager::url('cities', 'shanghai', true);
FilterManager::url('cities', 'beijing', true);//multiple values

// One province has many cities, one city has many counties ...,
// If you select 'all province' or one of provinces,
// you should linkage remove the selected cities and counties ...
//
// like this:
// select all province
FilterManager::url('province', FM_SELECT_ALL, false, ['cities', 'counties', ...]);//linkage remove selected cities
// select one province
FilterManager::url('province', 'sichuan', false, ['cities', 'counties', ...]);//linkage remove selected cities
```

###  Health Score

34

—

LowBetter than 77% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity29

Limited adoption so far

Community15

Small or concentrated contributor base

Maturity61

Established project with proven stability

 Bus Factor1

Top contributor holds 97.8% 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 ~111 days

Total

4

Last Release

3451d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/1b598ead57cbabafb3d2eea7db7901e3f51a37108750cc2552fc468c3364ee21?d=identicon)[toplan](/maintainers/toplan)

---

Top Contributors

[![toplan](https://avatars.githubusercontent.com/u/7815594?v=4)](https://github.com/toplan "toplan (45 commits)")[![SimonWang2014](https://avatars.githubusercontent.com/u/8307007?v=4)](https://github.com/SimonWang2014 "SimonWang2014 (1 commits)")

---

Tags

filterfilter-managerfilter-urlurl-createrfilterproduct list filter manager

### Embed Badge

![Health badge](/badges/toplan-filter-manager/health.svg)

```
[![Health](https://phpackages.com/badges/toplan-filter-manager/health.svg)](https://phpackages.com/packages/toplan-filter-manager)
```

###  Alternatives

[clue/stream-filter

A simple and modern approach to stream filtering in PHP

1.7k261.7M7](/packages/clue-stream-filter)[laminas/laminas-filter

Programmatically filter and normalize data and files

9428.0M150](/packages/laminas-laminas-filter)[friendsofcake/search

CakePHP Search plugin using PRG pattern

1742.0M37](/packages/friendsofcake-search)[htmlawed/htmlawed

Official htmLawed PHP library for HTML filtering

401.1M9](/packages/htmlawed-htmlawed)[outl1ne/nova-multiselect-filter

Multiselect filter for Laravel Nova.

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

This Laravel Nova package allows you to detach filters from the filter dropdown

64343.5k](/packages/outl1ne-nova-detached-filters)

PHPackages © 2026

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