diff --git a/src/Datagrid/Datagrid.php b/src/Datagrid/Datagrid.php index 0ffb9eaedb..98048744f3 100644 --- a/src/Datagrid/Datagrid.php +++ b/src/Datagrid/Datagrid.php @@ -325,7 +325,28 @@ private function buildForm(): FormInterface // NEXT_MAJOR: Keep the if part. if (method_exists($filter, 'getFormOptions')) { $type = FilterDataType::class; - $options = $filter->getFormOptions(); + + // NEXT_MAJOR: Keep the if part. + if (method_exists($filter, 'getLabelTranslationParameters')) { + $labelTranslationParameters = $filter->getLabelTranslationParameters(); + } else { + @trigger_error( + 'Not implementing "getLabelTranslationParameters()" is deprecated since sonata-project/admin-bundle 4.30' + .' and will throw an error in 5.0.', + \E_USER_DEPRECATED + ); + + $labelTranslationParameters = $filter->getOption('label_translation_parameters'); + } + + $defaultFormOptions = [ + 'label' => $filter->getLabel(), + 'label_translation_parameters' => $labelTranslationParameters, + 'translation_domain' => $filter->getTranslationDomain(), + 'field_type' => $filter->getFieldType(), + 'field_options' => $filter->getFieldOptions(), + ]; + $options = array_merge($defaultFormOptions, $filter->getFormOptions()); } else { @trigger_error( 'Not implementing "getFormOptions()" is deprecated since sonata-project/admin-bundle 4.15' diff --git a/src/Filter/Filter.php b/src/Filter/Filter.php index e54be96277..4231947f87 100644 --- a/src/Filter/Filter.php +++ b/src/Filter/Filter.php @@ -248,6 +248,24 @@ public function getRenderSettings(): array ]; } + final public function showFilter(): ?bool + { + return $this->getOption('show_filter'); + } + + /** + * @return array + */ + final public function getLabelTranslationParameters(): array + { + return $this->getOption('label_translation_parameters'); + } + + final public function withAdvancedFilter(): bool + { + return $this->getOption('advanced_filter'); + } + final protected function setActive(bool $active): void { $this->active = $active; diff --git a/src/Filter/FilterInterface.php b/src/Filter/FilterInterface.php index 74479309d8..d0f59b5c58 100644 --- a/src/Filter/FilterInterface.php +++ b/src/Filter/FilterInterface.php @@ -20,6 +20,9 @@ * @author Thomas Rabaix * * @method array getFormOptions(); + * @method bool|null showFilter(); + * @method array getLabelTranslationParameters(); + * @method bool withAdvancedFilter(); */ interface FilterInterface { diff --git a/src/Resources/views/Block/block_search_result.html.twig b/src/Resources/views/Block/block_search_result.html.twig index 19b67bc784..07e6413b40 100644 --- a/src/Resources/views/Block/block_search_result.html.twig +++ b/src/Resources/views/Block/block_search_result.html.twig @@ -45,10 +45,10 @@ file that was distributed with this source code.
{% for name, filter in filters %} - {% if filter.option('translation_domain') is same as(false) %} - {{ filter.option('label') }} + {% if filter.translationDomain is same as(false) %} + {{ filter.label }} {% else %} - {{ filter.option('label')|trans({}, filter.option('translation_domain', admin.translationDomain)) }} + {{ filter.label|trans({}, filter.translationDomain ?? admin.translationDomain) }} {% endif %} {% endfor %} diff --git a/src/Resources/views/CRUD/base_list.html.twig b/src/Resources/views/CRUD/base_list.html.twig index b833b0df95..5692b296e2 100644 --- a/src/Resources/views/CRUD/base_list.html.twig +++ b/src/Resources/views/CRUD/base_list.html.twig @@ -256,7 +256,8 @@ file that was distributed with this source code. {% endblock %} {% block list_filters_actions %} - {% set displayableFilters = admin.datagrid.filters|filter(filter => filter.option('show_filter') is not same as (false)) %} + {# NEXT_MAJOR: Remove |default(filter.option('show_filter')) #} + {% set displayableFilters = admin.datagrid.filters|filter(filter => filter.showFilter|default(filter.option('show_filter')) is not same as (false)) %} {%- if displayableFilters|length %}