/** * {@inheritdoc} */ public function addFilter(DatagridInterface $datagrid, $type, FieldDescriptionInterface $fieldDescription, AdminInterface $admin) { if ($type == null) { $guessType = $this->guesser->guessType($admin->getClass(), $fieldDescription->getName(), $admin->getModelManager()); $type = $guessType->getType(); $fieldDescription->setType($type); $options = $guessType->getOptions(); foreach ($options as $name => $value) { if (is_array($value)) { $fieldDescription->setOption($name, array_merge($value, $fieldDescription->getOption($name, array()))); } else { $fieldDescription->setOption($name, $fieldDescription->getOption($name, $value)); } } } else { $fieldDescription->setType($type); } $this->fixFieldDescription($admin, $fieldDescription); $admin->addFilterFieldDescription($fieldDescription->getName(), $fieldDescription); $fieldDescription->mergeOption('field_options', array('required' => false)); if ($type === 'doctrine_orm_model_autocomplete') { $fieldDescription->mergeOption('field_options', array('class' => $fieldDescription->getTargetEntity(), 'model_manager' => $fieldDescription->getAdmin()->getModelManager(), 'admin_code' => $admin->getCode(), 'context' => 'filter')); } $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); }
/** * {@inheritdoc} * * @return FilterInterface */ public function addFilter(DatagridInterface $datagrid, $type, FieldDescriptionInterface $fieldDescription, AdminInterface $admin) { if ($type == null) { $guessType = $this->guesser->guessType($admin->getClass(), $fieldDescription->getName(), $admin->getModelManager()); $type = $guessType->getType(); $fieldDescription->setType($type); $options = $guessType->getOptions(); foreach ($options as $name => $value) { if (is_array($value)) { $fieldDescription->setOption($name, array_merge($value, $fieldDescription->getOption($name, array()))); } else { $fieldDescription->setOption($name, $fieldDescription->getOption($name, $value)); } } } 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')); } return $datagrid->addFilter($filter); }