Models Resources

Фильтры

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

Чтобы указать, по каким полям фильтровать данные, достаточно в вашем ресурсе модели в методе 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'),
];
}
 
//...
}

filters filters_dark

Поля являются ключевым элементом в построении форм в админ-панели 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;
//...
}