Основы
Для создания фильтров также используются поля. Фильтры отображаются только на главной странице раздела.
Чтобы указать, по каким полям фильтровать данные, достаточно в вашем ModelResource
в методе filters()
вернуть массив с необходимыми полями.
Если метод отсутствует или возвращает пустой массив, то фильтры не будут отображаться.
Некоторые поля не могут участвовать в построении запроса фильтрации, поэтому они будут автоматически исключены из списка фильтров.
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'), ]; }}
Поля являются ключевым элементом в построении форм Moonshine. Подробнее о полях.
Apply
Для переопределения логики фильтрации вы можете применять метод полей onApply(). Так же предлагаем рассмотреть процесс применения полей на примере фильтрации.
Кеширование состояния
Если вам нужно кэшировать состояние фильтров, используйте свойство $saveQueryState
в ресурсе.
namespace App\MoonShine\Resources; use MoonShine\Laravel\Resources\ModelResource; class PostResource extends ModelResource{ protected bool $saveQueryState = true; // ...}