定义过滤器
Nova 的过滤器可以让你定制你的 Nova 列表的查询条件. 例如, 你也许想定义一个过滤器, 用来快速找到 你应用中的"管理员"用户:
你可以通过 nova:filter
Artisan 命令来生成一个过滤器, 生成的过滤器默认放在 app/Nova/Filters
文件夹下:
php artisan nova:filter UserType
每个在 Nova 中生成的过滤器都包含了2个方法 : apply
和 options
. 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个选项 : admin
和 editor
.
如示例所见, 你可以利用这个方式传入其他你希望的值到 apply
方法中以完成按条件过滤列表数据. apply
方法应该始终返回一个查询实例
本译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。