toplan / filter-manager
该软件包最新版本(1.0.4)没有可用的许可信息。
产品列表过滤器管理包,优雅生成URL。
1.0.4
2016-12-05 08:50 UTC
Requires
- php: >=5.4.0
This package is not auto-updated.
Last update: 2024-09-14 16:50:13 UTC
README
产品列表过滤器管理包,帮助您优雅生成过滤器URL。
安装
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
: 是否支持多个值?false
或true
,默认值为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