Laravel Admin 自定义筛选器 - 状态筛选示例
以下是一个基本的筛选器,可以根据status字段值过滤出支付或未支付的数据:/n/nphp/n<?php/n/nnamespace App/Admin/Filters;/n/nuse Encore//Admin//Facades//Admin;/nuse Encore//Admin//Grid//Filter;/n/nclass StatusFilter extends Filter/n{/n // 筛选器名称,可自定义/n protected $name = '状态';/n/n // 筛选器对应的字段名/n protected $column = 'status';/n/n public function __construct()/n {/n // 筛选器选项,可以自定义/n $this->select([/n 0 => '未支付',/n 1 => '已支付',/n ]);/n }/n/n public function apply($value)/n {/n // 根据筛选器选项处理查询条件/n switch ($value) {/n case 0:/n return $this->where($this->column, 0);/n case 1:/n return $this->where($this->column, 1);/n default:/n break;/n }/n }/n}/n/n/n在使用筛选器的地方,可以这样调用:/n/nphp/nuse App//Admin//Filters//StatusFilter;/n/n// .../n/nprotected function grid()/n{/n $grid = new Grid(new Model);/n/n $grid->filter(function($filter) {/n $filter->disableIdFilter(); // 禁用默认的ID筛选器/n $filter->filter('status', StatusFilter::class); // 使用自定义的状态筛选器/n });/n/n // .../n}/n/n/n以上代码中,StatusFilter 是自定义的筛选器类,$column 属性指定了要过滤的字段名,$name 属性指定了显示在筛选器上的名称,$select() 方法指定了筛选器选项,apply() 方法根据选项值处理查询条件。在使用筛选器时,通过 $filter() 方法将自定义的筛选器类传递给 $column 参数即可。
原文地址: https://www.cveoy.top/t/topic/mlVS 著作权归作者所有。请勿转载和采集!