Skip to content

Commit

Permalink
Fix default ListFilterForm config for -to-one associations (#114)
Browse files Browse the repository at this point in the history
  • Loading branch information
alterphp authored Apr 2, 2019
1 parent 226efa8 commit 43ec4cb
Showing 1 changed file with 17 additions and 7 deletions.
24 changes: 17 additions & 7 deletions src/Configuration/ListFormFiltersConfigPass.php
Original file line number Diff line number Diff line change
Expand Up @@ -178,18 +178,28 @@ private function configureFieldFilter(string $entityClass, array $fieldMapping,

private function configureAssociationFilter(string $entityClass, array $associationMapping, array &$filterConfig)
{
$defaultFilterConfigTypeOptions = [];

// To-One (EasyAdminAutocompleteType)
if ($associationMapping['type'] & ClassMetadataInfo::TO_ONE) {
$filterConfig['operator'] = $filterConfig['operator'] ?? ListFilter::OPERATOR_IN;
$filterConfig['type'] = $filterConfig['type'] ?? EasyAdminAutocompleteType::class;
$filterConfig['type_options'] = \array_merge(
[
'class' => $associationMapping['targetEntity'],
'multiple' => true,
],
$filterConfig['type_options'] ?? []
);
}

// Auto-set EasyAdminAutocompleteType options
if (EasyAdminAutocompleteType::class === $filterConfig['type']) {
$defaultFilterConfigTypeOptions['class'] = $associationMapping['targetEntity'];

if (\in_array($filterConfig['operator'], [ListFilter::OPERATOR_IN, ListFilter::OPERATOR_NOTIN])) {
$defaultFilterConfigTypeOptions['multiple'] = $defaultFilterConfigTypeOptions['multiple'] ?? true;
}
}

// Merge default type options
$filterConfig['type_options'] = \array_merge(
$defaultFilterConfigTypeOptions,
$filterConfig['type_options'] ?? []
);
}

private function getChoiceList(string $entityClass, string $property, array &$filterConfig)
Expand Down

0 comments on commit 43ec4cb

Please sign in to comment.