Laravel Nova API - 你能对请求的资源或镜头应用过滤器吗

Laravel Nova API - Can you apply a filter to a requested resource or lens

在通过 API 获取镜头时是否可以(或有人找到方法)应用滤镜,即;

http://my-site.test/nova-api/my-model/lens/my-lens?filter=MyFilter

如果有人知道如何添加多个过滤器,那么添加多个过滤器的能力也会很酷

我想出了怎么做,过滤器在 $request->filters 中进行 base64 编码后通过,示例;

[
    {"class":"App\Nova\Filters\MyFilter","value":1}
]

假设这是您的 "filters" 负载,您对其进行 base64 编码;

Ww0KICAgICAgICB7ImNsYXNzIjoiQXBwXFxOb3ZhXFxGaWx0ZXJzXFxNeUZpbHRlciIsInZhbHVlIjoxfQ0KICAgIF0=

那么您要经过的 URL 将是;

http://my-site.test/nova-api/my-model/lens/my-lens?filters=Ww0KICAgICAgICB7ImNsYXNzIjoiQXBwXFxOb3ZhXFxGaWx0ZXJzXFxNeUZpbHRlciIsInZhbHVlIjoxfQ0KICAgIF0=

private function filterize($id)
{
    $filter = base64_encode('[{"class":"App\\Nova\\Filters\\Ticket","value":"'.$id.'"}]');
    return trim($filter);
}

那就用

http://my-site.test/nova-api/my-model/lens/my-lens?filter={!! filterized_value !!}