Для создания фильтров также используются поля: они отображаются только на главной странице раздела.
Чтобы указать, по каким полям фильтровать данные, достаточно в вашем ресурсе модели в методе filters()
вернуть массив с необходимыми полями.
Если метод отсутствует или возвращает пустой массив, то фильтры не будут отображаться.
Некоторые поля не могут участвовать в построении запроса фильтрации, поэтому они будут автоматически исключены из списка фильтров.
namespace App\MoonShine\Resources;use App\Models\Post;use MoonShine\Fields\Text;use MoonShine\Resources\ModelResource;class PostResource extends ModelResource{protected string $model = Post::class;protected string $title = 'Posts';//...public function filters(): array{return [Text::make('Title', 'title'),];}//...}
namespace App\MoonShine\Resources;use App\Models\Post;use MoonShine\Fields\Text;use MoonShine\Resources\ModelResource;class PostResource extends ModelResource{protected string $model = Post::class;protected string $title = 'Posts';//...public function filters(): array{return [Text::make('Title', 'title'),];}//...}
Поля являются ключевым элементом в построении форм в админ-панели Moonshine. Подробнее о полях
Если вам нужно кэшировать состояние фильтров, используйте свойство saveFilterState
в ресурсе
namespace App\MoonShine\Resources;use App\Models\Post;use MoonShine\Resources\ModelResource;class PostResource extends ModelResource{protected string $model = Post::class;protected string $title = 'Posts';protected bool $saveFilterState = true;//...}
namespace App\MoonShine\Resources;use App\Models\Post;use MoonShine\Resources\ModelResource;class PostResource extends ModelResource{protected string $model = Post::class;protected string $title = 'Posts';protected bool $saveFilterState = true;//...}