1414namespace App \Grid ;
1515
1616use App \Entity \Book ;
17+ use App \Enum \BookCategory ;
1718use Sylius \Bundle \GridBundle \Builder \Action \Action ;
1819use Sylius \Bundle \GridBundle \Builder \Action \CreateAction ;
1920use Sylius \Bundle \GridBundle \Builder \Action \DeleteAction ;
2223use Sylius \Bundle \GridBundle \Builder \ActionGroup \BulkActionGroup ;
2324use Sylius \Bundle \GridBundle \Builder \ActionGroup \ItemActionGroup ;
2425use Sylius \Bundle \GridBundle \Builder \ActionGroup \MainActionGroup ;
26+ use Sylius \Bundle \GridBundle \Builder \Field \EnumField ;
2527use Sylius \Bundle \GridBundle \Builder \Field \StringField ;
28+ use Sylius \Bundle \GridBundle \Builder \Filter \EnumFilter ;
2629use Sylius \Bundle \GridBundle \Builder \Filter \StringFilter ;
2730use Sylius \Bundle \GridBundle \Builder \GridBuilderInterface ;
2831use Sylius \Bundle \GridBundle \Grid \AbstractGrid ;
2932use Sylius \Bundle \GridBundle \Grid \ResourceAwareGridInterface ;
33+ use Symfony \Contracts \Translation \TranslatorInterface ;
3034
3135final class BookGrid extends AbstractGrid implements ResourceAwareGridInterface
3236{
37+ public function __construct (public TranslatorInterface $ translator )
38+ {
39+ }
40+
3341 public static function getName (): string
3442 {
3543 return 'app_book ' ;
@@ -39,9 +47,13 @@ public function buildGrid(GridBuilderInterface $gridBuilder): void
3947 {
4048 $ gridBuilder
4149 ->orderBy ('title ' )
42- ->addFilter (
50+ ->withFilters (
4351 StringFilter::create ('search ' , ['title ' , 'authorName ' ])
4452 ->setLabel ('sylius.ui.search ' ),
53+ EnumFilter::create (name: 'category ' , enumClass: BookCategory::class, field: 'category ' )
54+ ->addFormOption ('choice_value ' , fn (?BookCategory $ enum ) => $ enum ?->value)
55+ ->addFormOption ('choice_label ' , fn (BookCategory $ choice ) => $ choice ->trans ($ this ->translator ))
56+ ->setLabel ('app.ui.category ' ),
4557 )
4658 ->addField (
4759 StringField::create ('title ' )
@@ -53,6 +65,11 @@ public function buildGrid(GridBuilderInterface $gridBuilder): void
5365 ->setLabel ('app.ui.author_name ' )
5466 ->setSortable (true ),
5567 )
68+ ->addField (
69+ EnumField::create ('category ' )
70+ ->setLabel ('app.ui.category ' )
71+ ->setSortable (true ),
72+ )
5673 ->addActionGroup (
5774 MainActionGroup::create (
5875 CreateAction::create (),
0 commit comments