Skip to content

Commit d804925

Browse files
Fix TypeError when calling Crud::setFilters(null)
The method signature accepts null but forwarded the value unchanged to CrudDto::setFiltersConfig(), whose parameter is not nullable. Null now means 'no filters' and is normalized to an empty FilterConfigDto.
1 parent dab940d commit d804925

2 files changed

Lines changed: 12 additions & 1 deletion

File tree

src/Config/Crud.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -288,7 +288,9 @@ public function autocomplete(bool $enable = true, ?callable $callback = null, ?s
288288

289289
public function setFilters(?FilterConfigDto $filters): self
290290
{
291-
$this->dto->setFiltersConfig($filters);
291+
// 'null' means "no filters", which is represented by an empty filter config
292+
// (CrudDto::setFiltersConfig() doesn't accept null values)
293+
$this->dto->setFiltersConfig($filters ?? new FilterConfigDto());
292294

293295
return $this;
294296
}

tests/Unit/Config/CrudTest.php

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
use EasyCorp\Bundle\EasyAdminBundle\Config\Action;
66
use EasyCorp\Bundle\EasyAdminBundle\Config\Crud;
77
use EasyCorp\Bundle\EasyAdminBundle\Config\Option\ClickTrigger;
8+
use EasyCorp\Bundle\EasyAdminBundle\Dto\FilterConfigDto;
89
use PHPUnit\Framework\TestCase;
910
use Symfony\Component\Translation\TranslatableMessage;
1011

@@ -308,4 +309,12 @@ public function testSetDefaultRowActionDefaultTriggerWithInvalidString(string $c
308309
$crudConfig = Crud::new();
309310
$crudConfig->setDefaultRowActionTrigger($clickTrigger);
310311
}
312+
313+
public function testSetFiltersAcceptsNull(): void
314+
{
315+
$crudConfig = Crud::new();
316+
$crudConfig->setFilters(null);
317+
318+
$this->assertInstanceOf(FilterConfigDto::class, $crudConfig->getAsDto()->getFiltersConfig());
319+
}
311320
}

0 commit comments

Comments
 (0)