# 列表过滤器
### [](https://octobercms.com/docs/backend/lists#list-filters)使用列表过滤器
可以通过在列表配置中[添加过滤器定义](https://octobercms.com/docs/backend/lists#adding-filters)来[过滤](https://octobercms.com/docs/backend/lists#adding-filters)列表。同样,筛选器由它们自己的包含筛选器作用域的配置文件驱动,每个作用域都是一个可以过滤列表的方面。下一个示例显示了过滤器定义文件的典型内容。
~~~
# ===================================
# Filter Scope Definitions
# ===================================
scopes:
category:
label: Category
modelClass: Acme\Blog\Models\Category
conditions: category_id in (:filtered)
nameFrom: name
status:
label: Status
type: group
conditions: status in (:filtered)
options:
pending: Pending
active: Active
closed: Closed
published:
label: Hide published
type: checkbox
default: 1
conditions: is_published <> true
approved:
label: Approved
type: switch
default: 2
conditions:
- is_approved <> true
- is_approved = true
created_at:
label: Date
type: date
conditions: created_at >= ':filtered'
published_at:
label: Date
type: daterange
conditions: created_at >= ':after' AND created_at <= ':before'
~~~
### [](https://octobercms.com/docs/backend/lists#filter-scope-options)范围选项
您可以为每个范围指定以下选项(如果适用):
| 选项 | 描述 |
| --- | --- |
| **label** | 向用户显示过滤器范围时的名称。 |
| **type** | 定义应如何呈现此范围(请参见下面的[范围类型](https://octobercms.com/docs/backend/lists#scope-types))。默认值:组。 |
| **conditions** | 指定要应用于列表模型查询的原始where语句,该`:filtered`参数表示过滤后的值。 |
| **scope** | 指定在**列表模型中**定义的[查询范围方法](https://octobercms.com/docs/database/model#query-scopes),以应用于列表查询。第一个参数将包含查询对象(按照常规范围方法),第二个参数将包含过滤后的值 |
| **options** | 如果按多个项目过滤时使用的选项,则此选项可以在`modelClass`模型中指定数组或方法名称。 |
| **nameFrom** | 如果按多个项目过滤,则显示名称的属性,该属性取自`modelClass`模型的所有记录。 |
| **default** | 可以是整数(开关,复选框,数字)或数组(组,日期范围,数字范围)或字符串(日期)。 |
| **permissions** | 当前后端用户必须具有的权限才能使用过滤器作用域。支持单个权限的字符串或仅需要一个权限即可授予访问权限的一组权限。 |
| **dependsOn** | 此作用域[依赖](https://octobercms.com/docs/backend/lists#filter-scope-dependencies)的字符串或其他作用域名称的数组。修改其他范围后,此范围将更新。 |
### 筛选器依存关系
筛选器作用域可以通过定义`dependsOn`[scope选项](https://octobercms.com/docs/backend/lists#filter-scope-options)来声明对其他作用域的依赖关系,该[选项](https://octobercms.com/docs/backend/lists#filter-scope-options)提供了一种服务器端解决方案,用于在修改其依赖关系时更新作用域。当声明为依赖项的范围发生更改时,定义范围将动态更新。这为更改提供给示波器的可用选项提供了机会。
~~~
country:
label: Country
type: group
conditions: country_id in (:filtered)
modelClass: October\Test\Models\Location
options: getCountryOptions
city:
label: City
type: group
conditions: city_id in (:filtered)
modelClass: October\Test\Models\Location
options: getCityOptions
dependsOn: country
~~~
在上面的示例中,范围更改后,`city`范围将刷新`country`。定义`dependsOn`属性的任何作用域都将作为“作用域名称”键控的数组传递给“过滤器”小部件的所有当前作用域对象,包括它们的当前值。
~~~
public function getCountryOptions()
{
return Country::lists('name', 'id');
}
public function getCityOptions($scopes = null)
{
if (!empty($scopes['country']->value)) {
return City::whereIn('country_id', array_keys($scopes['country']->value))->lists('name', 'id');
} else {
return City::lists('name', 'id');
}
}
~~~
> **注意:**`type: group`仅在此阶段支持范围依赖项。
### [](https://octobercms.com/docs/backend/lists#scope-types)可用范围类型
这些类型可用于确定应如何显示过滤器范围。
* [组](https://octobercms.com/docs/backend/lists#filter-group)
* [复选框](https://octobercms.com/docs/backend/lists#filter-checkbox)
* [开关](https://octobercms.com/docs/backend/lists#filter-switch)
* [日期](https://octobercms.com/docs/backend/lists#filter-date)
* [日期范围](https://octobercms.com/docs/backend/lists#filter-daterange)
* [数](https://octobercms.com/docs/backend/lists#filter-number)
* [号码范围](https://octobercms.com/docs/backend/lists#filter-numberrange)
* [文本](https://octobercms.com/docs/backend/lists#filter-text)
### [](https://octobercms.com/docs/backend/lists#filter-group)组
`group`\-按一组项目过滤列表,通常按相关模型进行过滤,并且需要`nameFrom`或`options`定义。例如:状态名称为打开,关闭等。
~~~
status:
label: Status
type: group
conditions: status in (:filtered)
default:
pending: Pending
active: Active
options:
pending: Pending
active: Active
closed: Closed
~~~
### [](https://octobercms.com/docs/backend/lists#filter-checkbox)复选框
`checkbox`\-用作二进制复选框以将预定义条件或查询应用于列表(打开或关闭)。使用0代表关闭,使用1代表开启
~~~
published:
label: Hide published
type: checkbox
default: 1
conditions: is_published <> true
~~~
### [](https://octobercms.com/docs/backend/lists#filter-switch)开关
`switch`\-用作在两个预定义条件或对列表的查询(不确定,打开或关闭)之间切换的开关。使用0表示关闭,使用1表示不确定,使用2表示打开作为默认值
~~~
approved:
label: Approved
type: switch
default: 1
conditions:
- is_approved <> true
- is_approved = true
~~~
### [](https://octobercms.com/docs/backend/lists#filter-date)日期
`date`\-显示要选择的单个日期的日期选择器。条件属性中可用的值是:
* `:filtered`:所选日期的格式为`Y-m-d`
* `:before`:选定的日期格式为`Y-m-d 00:00:00`,从后端时区转换为应用程序时区
* `:after`:选定的日期格式为`Y-m-d 23:59:59`,从后端时区转换为应用程序时区
created\_at:标签:日期类型:date最小日期:'2001-01-23'maxDate:'2030-10-13'yearRange:10条件:created\_at> =':filtered'
### [](https://octobercms.com/docs/backend/lists#filter-daterange)日期范围
`daterange`\-显示将两个日期选择为日期范围的日期选择器。条件属性中可用的值是:
* `:before`:所选的“之前”日期格式为`Y-m-d H:i:s`
* `:beforeDate`:所选的“之前”日期格式为`Y-m-d`
* `:after`:所选的“之后”日期格式为`Y-m-d H:i:s`
* `:afterDate`:所选的“之后”日期格式为`Y-m-d`
Published\_at:标签:日期类型:daterange最小日期:'2001-01-23'maxDate:'2030-10-13'yearRange:10条件:created\_at> =':after'AND created\_at <=':before'
为日期和日期范围使用默认值
~~~php
myController::extendListFilterScopes(function($filter)
{
'Date Test' => [
'label' => 'Date Test',
'type' => 'daterange',
'default' => $this->myDefaultTime(),
'conditions' => "created_at >= ':after' AND created_at <= ':before'"
],
]);
});
// return value must be instance of carbon
public function myDefaultTime()
{
return [
0 => Carbon::parse('2012-02-02'),
1 => Carbon::parse('2012-04-02'),
];
}
~~~
您可能还希望进行设置,`ignoreTimezone: true`以防止在显示的日期和数据库中存储的日期之间进行时区转换,因为默认情况下,后端时区首选项应用于显示值。
~~~
published_at:
label: Date
type: daterange
minDate: '2001-01-23'
maxDate: '2030-10-13'
yearRange: 10
conditions: created_at >= ':after' AND created_at <= ':before'
ignoreTimezone: true
~~~
> **注意:**该`ignoreTimezone`选项也适用于`date`过滤器类型。
### [](https://octobercms.com/docs/backend/lists#filter-number)数
`number`\-显示输入的单个号码。该值可在条件属性中用作`:filtered`。
~~~
age:
label: Age
type: number
default: 14
conditions: age >= ':filtered'
~~~
### [](https://octobercms.com/docs/backend/lists#filter-numberrange)编号范围
`numberrange`\-显示两个要输入为数字范围的数字的输入。条件属性中可用的值是:
* `:min`:最小值,默认为-2147483647
* `:max`:最大值,默认为2147483647
您可以将最小值留为空白以搜索所有最大值为止的内容,反之亦然,可以将最大值留为空白以搜索至少最小值的所有内容。
~~~
visitors:
label: Visitor Count
type: numberrange
default:
0: 10
1: 20
conditions: visitors >= ':min' and visitors <= ':max'
~~~
### [](https://octobercms.com/docs/backend/lists#filter-text)文本
`text`\-显示要输入的字符串的文本输入。您可以指定`size`将在输入大小属性中注入的属性(默认值:10)。
~~~
username:
label: Username
type: text
conditions: username = :value
size: 2
~~~
- 基本说明
- 基本操作
- October cms 安装
- 后台控制器路径
- 图标
- 获取安装网上的插件/主题
- 插件构造器使用
- 定时任务
- October后台控制器
- vscode编辑器
- ajax操作
- 使用
- ajax更新组件
- ajax属性API
- JavaScript API
- ajax综合使用
- 主题
- 多语言主题
- 安装市场主题
- 主题程序处理
- 主题
- 页面
- 部件
- 布局
- 内容
- 组件
- 媒体
- 主题表单操作
- 表单使用
- 表单后端程序处理
- 插件
- 自定义插件
- 插件说明
- 插件导航条
- 插件数据库设置
- 插件的设置管理
- 插件的配置文件config
- 组件
- app服务
- app容器
- 扩展行为
- 缓存
- Collection类
- Lazy Collections
- Collection方法
- 助手函数
- 数组助手函数
- 路径助手函数
- 玄乐助手函数
- 其他助手函数
- 错误与记录
- 事件处理
- HTML页面
- 文件与目录操作
- 散列和加密
- 邮件
- 邮件内容
- 邮件发送
- 分页
- 模板解析器
- 动态解析器语法
- 队列消息
- 请求与输入
- 响应
- 视图
- 路由器
- 配置
- 验证操作
- 处理错误消息
- 错误消息与视图
- 可用的验证规则
- 有条件的验证规则
- 验证数组
- 错误消息
- 自定义验证规则
- 模型操作
- 定义模型与其属性
- 检索模型
- 插入与更新
- 删除模型
- 查询范围
- 事件操作
- 关联操作
- 定义关系
- 关系类型
- 多肽关系
- 关系查询
- 渴望加载
- 插入模型
- 数据库操作
- 基本用法
- 数据表结构
- 查询连贯操作
- 结果检索
- select子句
- 插入更新
- where子句
- 排序,分组,限制和偏移
- 文件附件
- Collection操作
- 属性操作
- 系列化json
- 数据库属性
- 数据库行为
- 控制器
- 后台控制器定义
- 后台页面
- 后台组件
- 后台表单
- 表单组件
- 表单视图
- 表单行为
- 后台列表
- 列表行为
- 列表过滤器
- 可用列类型
- 关系行为
- 关系行为类型
- 扩展关系行为
- 列表排序操作
- 导入导出操作
- 用于与权限
- corlate模板修改
- 修改顶部导航
- laravel问题
- 控制器不存在
- 控制器
- 路由组
- laravel笔记
- laravel 安装
- 伪静态配置
- 依赖注入 & 控制器
- 中间件
- 路由文件
- 视图