61 lines
1.7 KiB
PHP
61 lines
1.7 KiB
PHP
<?php
|
|
|
|
namespace Laravel\Nova;
|
|
|
|
use Laravel\Nova\Http\Requests\NovaRequest;
|
|
|
|
trait ResolvesFilters
|
|
{
|
|
/**
|
|
* Get the filters that are available for the given request.
|
|
*
|
|
* @param \Laravel\Nova\Http\Requests\NovaRequest $request
|
|
* @return \Illuminate\Support\Collection<int, \Laravel\Nova\Filters\Filter>
|
|
*/
|
|
public function availableFilters(NovaRequest $request)
|
|
{
|
|
return $this->resolveFilters($request)
|
|
->concat($this->resolveFiltersFromFields($request))
|
|
->filter->authorizedToSee($request)
|
|
->values();
|
|
}
|
|
|
|
/**
|
|
* Get the filters for the given request.
|
|
*
|
|
* @param \Laravel\Nova\Http\Requests\NovaRequest $request
|
|
* @return \Illuminate\Support\Collection<int, \Laravel\Nova\Filters\Filter>
|
|
*/
|
|
public function resolveFilters(NovaRequest $request)
|
|
{
|
|
return collect(array_values($this->filter($this->filters($request))));
|
|
}
|
|
|
|
/**
|
|
* Get the filters from filterable fields for the given request.
|
|
*
|
|
* @param \Laravel\Nova\Http\Requests\NovaRequest $request
|
|
* @return \Illuminate\Support\Collection
|
|
*/
|
|
public function resolveFiltersFromFields(NovaRequest $request)
|
|
{
|
|
return collect(array_values($this->filter(
|
|
$this->filterableFields($request)
|
|
->transform(function ($field) use ($request) {
|
|
return $field->resolveFilter($request);
|
|
})->filter()->all()
|
|
)));
|
|
}
|
|
|
|
/**
|
|
* Get the filters available on the entity.
|
|
*
|
|
* @param \Laravel\Nova\Http\Requests\NovaRequest $request
|
|
* @return array
|
|
*/
|
|
public function filters(NovaRequest $request)
|
|
{
|
|
return [];
|
|
}
|
|
}
|