/** * @param DatagridInterface $datagrid * @param string $type * @param FieldDescriptionInterface $fieldDescription * @param AdminInterface $admin */ public function addFilter(DatagridInterface $datagrid, $type = null, FieldDescriptionInterface $fieldDescription, AdminInterface $admin) { if ($type == null) { $guessType = $this->guesser->guessType($admin->getClass(), $fieldDescription->getName(), $admin->getModelManager()); $type = $guessType->getType(); $fieldDescription->setType($type); $fieldDescription->mergeOption('field_options', $guessType->getOptions()); } else { $fieldDescription->setType($type); } $this->fixFieldDescription($admin, $fieldDescription); $admin->addFilterFieldDescription($fieldDescription->getName(), $fieldDescription); $fieldDescription->mergeOption('field_options', array('required' => false)); $filter = $this->filterFactory->create($fieldDescription->getName(), $type, $fieldDescription->getOptions()); if (false !== $filter->getLabel() && !$filter->getLabel()) { $filter->setLabel($admin->getLabelTranslatorStrategy()->getLabel($fieldDescription->getName(), 'filter', 'label')); } $datagrid->addFilter($filter); }