toplan/filter-manager

该软件包最新版本(1.0.4)没有可用的许可信息。

产品列表过滤器管理包,优雅生成URL。

1.0.4 2016-12-05 08:50 UTC

This package is not auto-updated.

Last update: 2024-09-14 16:50:13 UTC


README

产品列表过滤器管理包,帮助您优雅生成过滤器URL。

中文文档

demo image

安装

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

用法

1. 准备工作

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!

或者在Laravel中使用如下

在config/app.php中找到providers键并注册FilterManger服务提供者。

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

在config/app.php中找到aliases键。

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

2. 享受使用

在模板中使用$fm

<!-- example -->
<li class="item all {{$fm->isActive('gender', FM_SELECT_ALL, 'active', '')}}">
  <a href="{{$fm->url('gender', FM_SELECT_ALL)}}">All</a>
</li>
<li class="item @if($fm->isActive('gender', 'male')) active @endif">
  <a href="{{$fm->url('gender', 'male')}}">Male</a>
</li>
<li class="item @if($fm->isActive('gender', 'female')) active @endif">
  <a href="{{$fm->url('gender', 'female')}}">Female</a>
</li>

或者在模板中使用Laravel外观值FilterManager

<!-- example -->
<li class="item all {{FilterManager::isActive('gender', FM_SELECT_ALL, 'active', '')}}">
  <a href="{{FilterManager::url('gender', FM_SELECT_ALL)}}">All</a>
</li>
<li class="item @if(FilterManager::isActive('gender', 'male')) active @endif">
  <a href="{{FilterManager::url('gender', 'male')}}">Male</a>
</li>
<li class="item @if(FilterManager::isActive('gender','female')) active @endif">
  <a href="{{FilterManager::url('gender', 'female')}}">Female</a>
</li>

API

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

创建一个实例。

  • $filters: 这是过滤器数据,必需,例如:['gender'=>'male', 'city'=>'beijing']

  • $baseUrl: 默认值为空字符串。

  • $blackList: 这是过滤器黑名单,默认值为[],例如:['pageindex']。

setBlackList(array $list)

设置过滤器黑名单。

示例

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

has($filterName)

是否有字符过滤器,如果是,则返回值,如果不是,则返回false。

示例

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

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

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

示例

//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)

一个过滤器有一些值,每个值都有一个URL,此方法返回完整的URL字符串。

  • $filterName: 参数名,必需。

  • $filterValue: 参数值,默认值为FM_SELECT_ALL

  • $multi: 是否支持多个值?falsetrue,默认值为false

  • $linkageRemoveFilters:关联删除其他过滤器,默认值为[]

  • $blackList: 临时黑名单,默认值为[]

示例

//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