定义过滤器

未匹配的标注

Nova 的过滤器可以让你定制你的 Nova 列表的查询条件. 例如, 你也许想定义一个过滤器, 用来快速找到 你应用中的"管理员"用户:

Filters

你可以通过 nova:filter Artisan 命令来生成一个过滤器, 生成的过滤器默认放在 app/Nova/Filters 文件夹下:

php artisan nova:filter UserType

每个在 Nova 中生成的过滤器都包含了2个方法 : applyoptions. apply 方法负责按你希望的状态修改查询条件, 而 options 方法用来定义过滤器中你要定义的过滤选项. 举个例子, UserType过滤器内容如下 :

<?php

namespace App\Nova\Filters;

use Illuminate\Http\Request;
use Laravel\Nova\Filters\Filter;

class UserType extends Filter
{
    /**
     * 申明这个过滤器的查询条件.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Illuminate\Database\Eloquent\Builder  $query
     * @param  mixed  $value
     * @return \Illuminate\Database\Eloquent\Builder
     */
    public function apply(Request $request, $query, $value)
    {
        return $query->where('type', $value);
    }

    /**
     * 获取过滤器的可选性.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return array
     */
    public function options(Request $request)
    {
        return [
            '管理员' => 'admin',
            '编辑' => 'editor',
        ];
    }
}

options 方法返回一个键值对数组. 数组的键是展示给使用者选择的文本 . 数组的值则会在选择后作为 $value 参数传入 apply 方法. 在示例中, 我们的过滤器定义了2个选项 : admineditor.

如示例所见, 你可以利用这个方式传入其他你希望的值到 apply 方法中以完成按条件过滤列表数据. apply 方法应该始终返回一个查询实例

本文章首发在 LearnKu.com 网站上。

本译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。

原文地址:https://learnku.com/docs/nova/1.0/defini...

译文地址:https://learnku.com/docs/nova/1.0/defini...

上一篇 下一篇
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
贡献者:2
讨论数量: 0
发起讨论 只看当前版本


暂无话题~