From af0bb9f91252feeccf7ae9733509eb4292499bfc Mon Sep 17 00:00:00 2001 From: Brandon Date: Mon, 23 Jan 2023 09:50:36 +0100 Subject: [PATCH] Use filters on nested properties --- doc/filters.rst | 10 ++ src/Dto/FilterDataDto.php | 5 + .../Configurator/NestedConfigurator.php | 88 ++++++++++ src/Filter/NestedFilter.php | 159 ++++++++++++++++++ src/Resources/config/services.php | 7 + .../Configurator/NestedConfiguratorTest.php | 60 +++++++ tests/Filter/NestedFilterTest.php | 134 +++++++++++++++ 7 files changed, 463 insertions(+) create mode 100644 src/Filter/Configurator/NestedConfigurator.php create mode 100644 src/Filter/NestedFilter.php create mode 100644 tests/Filter/Configurator/NestedConfiguratorTest.php create mode 100644 tests/Filter/NestedFilterTest.php diff --git a/doc/filters.rst b/doc/filters.rst index 9f25682ec0..0ce8c2c975 100644 --- a/doc/filters.rst +++ b/doc/filters.rst @@ -35,6 +35,8 @@ explicitly:: use EasyCorp\Bundle\EasyAdminBundle\Config\Filters; use EasyCorp\Bundle\EasyAdminBundle\Controller\AbstractCrudController; use EasyCorp\Bundle\EasyAdminBundle\Filter\BooleanFilter; + use EasyCorp\Bundle\EasyAdminBundle\Filter\NestedFilter; + use EasyCorp\Bundle\EasyAdminBundle\Filter\TextFilter; class ProductCrudController extends AbstractCrudController { @@ -48,6 +50,11 @@ explicitly:: // most of the times there is no need to define the // filter type because EasyAdmin can guess it automatically ->add(BooleanFilter::new('published')) + + // Use filter on nested property + ->add(NestedFilter::wrap( + TextFilter::new('options.name') + )) ; } } @@ -79,6 +86,9 @@ These are the built-in filters provided by EasyAdmin: * ``TextFilter``: applied by default to string/text fields. It's rendered as a ```` or ``