过滤器
默认过滤器

默认会创建一个全部字段的搜索框, 点击搜索时, like查询全部字段

默认搜索框
创建过滤器

创建过滤器只需要重写configListFilter方法:

#project\app\admin\controller\Category.php

namespace app\admin\controller;

use easyadmin\app\libs\ListFilter;

class Category extends \easyadmin\controller\Admin
{
    protected function configListFilter(ListFilter $filter)
    {
        $filter->addFilter('name', '名称', FormText::class);
    }
}

过滤器 join

过滤器使用 join 同 列表的join 一样, 先调用configListJoin方法,记住声明的别名,然后什么过滤器字段的时候使用相同的别名即可;

#project\app\admin\controller\Category.php

namespace app\admin\controller;

use easyadmin\app\libs\Page;
use easyadmin\app\columns\form\FormText;
use easyadmin\app\libs\ListFilter;
use think\db\Query;

class Category extends \easyadmin\controller\Admin
{

    protected function configListFilter(ListFilter $filter)
    {
        // configListJoin 方法类的别名, 如果是查询的主表, 可不写别名
        $filter->addFilter('c.name', '名称', FormText::class);
    }

    /**
     * 配置关联查询
     * @param Query $query  thinkphp 的 query, 可使用 thinkphp 的数据库查询方法, 这里主要是join 关联数据表
     * @param string $alias 查询主表的别名
     */
    protected function configListJoin(Page $page, Query $query, string $alias)
    {
        // 这里就是 thinkphp 的join用法, 详细可参考 thinkphp 的文档
        // 这里关联 category 表使用的别名是 c ,在列表字段,过滤器字段 同样使用 c 别名即可
        $query->join('category c','c.id='. $alias .'.parent_id');
    }

}

addFilter 方法 参数说明:
字段 说明 类型 必填 默认值
field 字段名称;数据库表的字段,例如:name; 如果是 多表关联查询 ,需要写上关联表的别名,例如:user.name ; string
label 字段标题,显示名称 string
fieldClass 渲染字段的类名; 例如是使用 ListText 类渲染本字段,则填写 ListText::class ; 详见预定义字段 string
options 字段的选项; 不同的字段有不同的选项, 详见预定义字段 array
自定义查询

自定义查询,字需要在options中传入filter_callback参数:

#project\app\admin\controller\Category.php

namespace app\admin\controller;

use easyadmin\app\libs\ListFilter;
use think\db\Query;

class Category extends \easyadmin\controller\Admin
{
    protected function configListFilter(ListFilter $filter)
    {
        $filter->addFilter('name', '名称', FormText::class, [
            /**
             * @param Query $query thinkphp 的查询 query 对象, 可用 thinkphp 的任意查询方法
             * @param string $alias 主表的查询别名,  如果是join的字段, 不要用这个别名,直接用 join 声明的别名
             * @param void $val 用户输入框输入的值
             */
            'filter_callback' => function (Query $query, $alias, $val) {
                //根据自己的业务,判断是否需要空值判断
                if(!empty($val)){
                     $query->where("{$alias}.name", 'like', "%{$val}%"); 
                }
            }
        ]);
    }
}
filter_callback 方法 参数说明:
字段 说明 类型 必填 默认值
query thinkphp 的数据库查询对象, 可用任何thinkphp的查询方法 Query Object
alias 查询主表的别名 select * from table as table_name 中的 table_name string
val 当前用户输入的值 string
搜索结果高亮

顾名思义,就是用户输入的值,如果在结果中出现,就高亮显示它

默认搜索框

搜索结果高亮,字需要在options中传入highlight参数:

不过只有部分字段支持,列表是FormText这种文本类型的就支持, 列表是 select checkbox switch 这种就不支持了

#project\app\admin\controller\Category.php

namespace app\admin\controller;

use easyadmin\app\libs\ListFilter;

class Category extends \easyadmin\controller\Admin
{
    protected function configListFilter(ListFilter $filter)
    {
        $filter->addFilter('name', '名称', FormText::class, [

            //高亮方式有3种, 默认第一种 ;

            // true 开启高亮, false 关闭高亮
            'highlight' => true,

            //自定义一种颜色值  red blue #f3f ... 等等正确的颜色值都可用,
            'highlight' => 'red',

            // 回调函数处理高亮, 传入用户输入的值
            'highlight' => function ($val) {
                return '' . $val . '';
            },

            // false: 列表中所有包含输入框值的都高亮, 高亮全部字段
            // true: 只是搜索字段对应的列表字段高亮,  高亮一个字段
            'highlight_self'=>false ,
        ]);
    }
}

highlight 可用值

说明
false 关闭高亮
true 默认的高亮, 黄色背景 白色文字
颜色值 直接用指定的颜色显示
匿名函数 自定义函数处理

默认是列表中所有字段都高亮的, 如果仅仅是需要高亮搜索字段,可指定highlight_selftrue

下拉选择类型的搜索
#project\app\admin\controller\Category.php

namespace app\admin\controller;

use easyadmin\app\libs\ListFilter;
use easyadmin\app\columns\form\FormSelect;

class Category extends \easyadmin\controller\Admin
{
    protected function configListFilter(ListFilter $filter)
    {
        $filter->addFilter('name', '名称', FormSelect::class, [
            'highlight'=>true,  //是否启用搜索结果高亮
            'options' => [      //下拉选择列表
                ['key'=>'php','text'=>'PHP'],
                ['key'=>'javascript','text'=>'js'],
            ]
        ]);
    }
}
下拉选择类型的搜索
日期范围搜索

展示一个 日期范围选择框,默认用BETWEEN AND搜索; 需要自定义搜索方式,参考 自定义查询

#project\app\admin\controller\Category.php

namespace app\admin\controller;

use easyadmin\app\libs\ListFilter;
use easyadmin\app\columns\form\FormDateTimeRange;

class Category extends \easyadmin\controller\Admin
{
    protected function configListFilter(ListFilter $filter)
    {
        $filter->addFilter('time', '创建时间', FormDateTimeRange::class, [
            'in_format' => function ($val) {  //处理用户输入值的回调, 通常和 format 成对出现
                return strtotime($val);
            },
            'format' => function ($val) {     //处理完的值用什么样的格式输出到界面上, 通常和  in_format 成对出现
                return date('Y-m-d H:i:s',$val);
            }
        ]);
    }
}
下拉选择类型的搜索

      更多字段类型, 详见预定义字段




深圳SEO优化公司温州网站搜索优化哪家好贺州网站优化推广推荐烟台推广网站价格观澜网站制作公司绥化百度竞价包年推广报价安顺外贸网站建设哪家好甘南网络广告推广哪家好湘潭网站优化价格玉溪网站优化公司张北模板推广推荐大鹏seo优化报价漳州SEO按天收费推荐观澜SEO按天扣费报价山南seo哪家好盐田SEO按天收费推荐丽水高端网站设计推荐果洛seo报价青岛百度爱采购公司六安网站搭建推荐大运网页设计价格防城港网站定制多少钱黄冈设计网站推荐甘南优化价格镇江品牌网站设计哪家好兴安盟网站优化按天扣费报价宝安网站优化按天扣费松原网站设计模板哪家好大理网站排名优化推荐石家庄百姓网标王报价淮南网站优化按天扣费多少钱歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化