定义过滤器

未匹配的标注

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


暂无话题~