How to specify default filter values ​for a Laravel Filament MultiSelectFilter field?

Viewed 811

How to specify the fields 'grade', 'new', 'in_work', 'review' , 'pause' in the default filter?

MultiSelectFilter::make('status')
                    ->options([
                        'grade' => 'Оценка',
                        'new' => 'Новая',
                        'in_work' => 'В работе',
                        'review' => 'На проверке',
                        'pause' => 'На паузе',
                        'ready' => 'Готово',
                        'canceled' => 'Отменена',
                    ])
                    ->label('Статус'),
1 Answers

To set up a filter in this way, you need to make a form and set up a request

MultiSelectFilter::make('status')
                ->form([
                    Forms\Components\MultiSelect::make('status')
                        ->options([
                            'grade' => 'Оценка',
                            'new' => 'Новая',
                            'in_work' => 'В работе',
                            'review' => 'На проверке',
                            'pause' => 'На паузе',
                            'ready' => 'Готово',
                            'canceled' => 'Отменена',
                        ])->default(array('grade', 'new', 'in_work', 'review', 'pause'))
                        ->label('Статус'),
                ])
                ->query(function (Builder $query, array $data): Builder {
                    return $query
                        ->when(
                            $data['status'],
                            fn (Builder $query, $status): Builder => $query->whereIn('status', $status),
                        );
                }),
Related