diff --git a/src/Config/Crud.php b/src/Config/Crud.php index 3da33a1d24..7b5b413bd8 100644 --- a/src/Config/Crud.php +++ b/src/Config/Crud.php @@ -288,7 +288,9 @@ public function autocomplete(bool $enable = true, ?callable $callback = null, ?s public function setFilters(?FilterConfigDto $filters): self { - $this->dto->setFiltersConfig($filters); + // 'null' means "no filters", which is represented by an empty filter config + // (CrudDto::setFiltersConfig() doesn't accept null values) + $this->dto->setFiltersConfig($filters ?? new FilterConfigDto()); return $this; } diff --git a/tests/Unit/Config/CrudTest.php b/tests/Unit/Config/CrudTest.php index 0355941314..294a3764dd 100644 --- a/tests/Unit/Config/CrudTest.php +++ b/tests/Unit/Config/CrudTest.php @@ -5,6 +5,7 @@ use EasyCorp\Bundle\EasyAdminBundle\Config\Action; use EasyCorp\Bundle\EasyAdminBundle\Config\Crud; use EasyCorp\Bundle\EasyAdminBundle\Config\Option\ClickTrigger; +use EasyCorp\Bundle\EasyAdminBundle\Dto\FilterConfigDto; use PHPUnit\Framework\TestCase; use Symfony\Component\Translation\TranslatableMessage; @@ -308,4 +309,12 @@ public function testSetDefaultRowActionDefaultTriggerWithInvalidString(string $c $crudConfig = Crud::new(); $crudConfig->setDefaultRowActionTrigger($clickTrigger); } + + public function testSetFiltersAcceptsNull(): void + { + $crudConfig = Crud::new(); + $crudConfig->setFilters(null); + + $this->assertInstanceOf(FilterConfigDto::class, $crudConfig->getAsDto()->getFiltersConfig()); + } }