From 90b615c5b214bbbbf280bbfab193b6a1c1357cb9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Fastr=C3=A9?= Date: Fri, 14 Jun 2024 13:58:48 +0200 Subject: [PATCH] Add data transformation interface for filters Introduced a new DataTransformerFilterInterface that allows transforming filter's form data before it is processed. Updated the FilterType file to add a view transformer if the filter implements this new interface. This new transformation process caters to transforming existing data in saved exports and replacing it with default values. --- .../Export/DataTransformerFilterInterface.php | 25 +++++++++++++++++++ .../Export/FilterInterface.php | 3 +++ .../Form/Type/Export/FilterType.php | 11 ++++++++ 3 files changed, 39 insertions(+) create mode 100644 src/Bundle/ChillMainBundle/Export/DataTransformerFilterInterface.php diff --git a/src/Bundle/ChillMainBundle/Export/DataTransformerFilterInterface.php b/src/Bundle/ChillMainBundle/Export/DataTransformerFilterInterface.php new file mode 100644 index 000000000..055ee2edc --- /dev/null +++ b/src/Bundle/ChillMainBundle/Export/DataTransformerFilterInterface.php @@ -0,0 +1,25 @@ +buildForm($filterFormBuilder); + if ($filter instanceof DataTransformerFilterInterface) { + $filterFormBuilder->addViewTransformer(new CallbackTransformer( + fn (?array $data) => $data, + function (?array $data) use ($filter) { + return $filter->transformData($data); + }, + )); + } + $builder->add($filterFormBuilder); }