From 75afd8af5702815d69a0f1ff36396a61644be6f7 Mon Sep 17 00:00:00 2001 From: Pablo Rodriguez Date: Sat, 27 Jul 2024 23:41:52 -0400 Subject: [PATCH] Customize EasyAdmin --- .../Admin/CommentCrudController.php | 49 ++++++++++++++++--- 1 file changed, 42 insertions(+), 7 deletions(-) diff --git a/src/Controller/Admin/CommentCrudController.php b/src/Controller/Admin/CommentCrudController.php index 57db8fa..06b2e15 100644 --- a/src/Controller/Admin/CommentCrudController.php +++ b/src/Controller/Admin/CommentCrudController.php @@ -3,10 +3,17 @@ namespace App\Controller\Admin; use App\Entity\Comment; +use EasyCorp\Bundle\EasyAdminBundle\Config\Crud; +use EasyCorp\Bundle\EasyAdminBundle\Config\Filters; use EasyCorp\Bundle\EasyAdminBundle\Controller\AbstractCrudController; +use EasyCorp\Bundle\EasyAdminBundle\Field\AssociationField; +use EasyCorp\Bundle\EasyAdminBundle\Field\DateTimeField; +use EasyCorp\Bundle\EasyAdminBundle\Field\EmailField; use EasyCorp\Bundle\EasyAdminBundle\Field\IdField; +use EasyCorp\Bundle\EasyAdminBundle\Field\TextareaField; use EasyCorp\Bundle\EasyAdminBundle\Field\TextEditorField; use EasyCorp\Bundle\EasyAdminBundle\Field\TextField; +use EasyCorp\Bundle\EasyAdminBundle\Filter\EntityFilter; class CommentCrudController extends AbstractCrudController { @@ -15,14 +22,42 @@ class CommentCrudController extends AbstractCrudController return Comment::class; } - /* + public function configureCrud(Crud $crud): Crud + { + return $crud + ->setEntityLabelInSingular('Conference Comment') + ->setEntityLabelInPlural('Conference Comments') + ->setSearchFields(['author', 'text', 'email']) + ->setDefaultSort(['createdAt' => 'DESC']) + ; + } + + public function configureFilters(Filters $filters): Filters + { + return $filters + ->add(EntityFilter::new('conference')); + } + public function configureFields(string $pageName): iterable { - return [ - IdField::new('id'), - TextField::new('title'), - TextEditorField::new('description'), - ]; + yield AssociationField::new('conference'); + yield TextField::new('author'); + yield EmailField::new('email'); + yield TextareaField::new('text') + ->hideOnIndex() + ; + yield TextField::new('photoFilename') + ->onlyOnIndex() + ; + + $createdAt = DateTimeField::new('createdAt')->setFormTypeOptions([ + 'years' => range(date('Y'), date('Y') + 5), + 'widget' => 'single_text', + ]); + if(Crud::PAGE_EDIT === $pageName) { + yield $createdAt->setFormTypeOption('disabled', true); + } else { + yield $createdAt; + } } - */ }