ModelResource

Фильтры

Основы

Для создания фильтров также используются поля. Фильтры отображаются только на главной странице раздела.

Чтобы указать, по каким полям фильтровать данные, достаточно в вашем ModelResource в методе filters() вернуть массив с необходимыми полями.

Если метод отсутствует или возвращает пустой массив, то фильтры не будут отображаться.

Некоторые поля не могут участвовать в построении запроса фильтрации, поэтому они будут автоматически исключены из списка фильтров.

 namespaces
namespace App\MoonShine\Resources;
 
use MoonShine\UI\Fields\Text;
use MoonShine\Laravel\Resources\ModelResource;
 
class PostResource extends ModelResource
{
// ...
 
protected function filters(): iterable
{
return [
Text::make('Title', 'title'),
];
}
}

filters filters_dark

Поля являются ключевым элементом в построении форм Moonshine. Подробнее о полях.

Apply

Для переопределения логики фильтрации вы можете применять метод полей onApply(). Так же предлагаем рассмотреть процесс применения полей на примере фильтрации.

Кеширование состояния

Если вам нужно кэшировать состояние фильтров, используйте свойство $saveQueryState в ресурсе.

 namespaces
namespace App\MoonShine\Resources;
 
use MoonShine\Laravel\Resources\ModelResource;
 
class PostResource extends ModelResource
{
protected bool $saveQueryState = true;
 
// ...
}