Bläddra i källkod

Remove the FieldDescription dependency from the FilterFactory

Thomas Rabaix 13 år sedan
förälder
incheckning
6fd29bb8af

+ 1 - 1
Builder/ORM/DatagridBuilder.php

@@ -102,7 +102,7 @@ class DatagridBuilder implements DatagridBuilderInterface
         $this->fixFieldDescription($admin, $fieldDescription);
         $admin->addFilterFieldDescription($fieldDescription->getName(), $fieldDescription);
 
-        $filter = $this->filterFactory->create($fieldDescription);
+        $filter = $this->filterFactory->create($fieldDescription->getName(), $type, $fieldDescription->getOptions());
 
         $datagrid->addFilter($filter);
 

+ 1 - 0
Controller/CRUDController.php

@@ -231,6 +231,7 @@ class CRUDController extends Controller
                 // redirect to edit mode
                 return $this->redirectTo($object);
             }
+
             $this->get('session')->setFlash('sonata_flash_error', 'flash_edit_error');
         }
 

+ 8 - 9
Filter/FilterFactory.php

@@ -37,17 +37,18 @@ class FilterFactory implements FilterFactoryInterface
     }
 
     /**
-     * @param \Sonata\AdminBundle\Admin\FieldDescriptionInterface $fieldDescription
-     * @return \Sonata\AdminBundle\Filter\FilterInterface
+     * @throws \RunTimeException
+     * @param $name
+     * @param $type
+     * @param $options
+     * @return object|\Symfony\Component\DependencyInjection\The
      */
-    public function create(FieldDescriptionInterface $fieldDescription)
+    public function create($name, $type, $options)
     {
-        if (!$fieldDescription->getType()) {
+        if (!$type) {
             throw new \RunTimeException('The type must be defined');
         }
 
-        $type = $fieldDescription->getType();
-
         $id = isset($this->types[$type]) ? $this->types[$type] : false;
 
         if (!$id) {
@@ -60,9 +61,7 @@ class FilterFactory implements FilterFactoryInterface
             throw new \RunTimeException(sprintf('The service `%s` must implement `FilterInterface`', $id));
         }
 
-        $fieldDescription->mergeOption('field_options', array('required' => false));
-        $fieldDescription->setOption('field_name', $fieldDescription->getOption('field_name', $fieldDescription->getName()));
-        $filter->initialize($fieldDescription->getName(), $fieldDescription->getOptions());
+        $filter->initialize($name, $options);
 
         return $filter;
     }

+ 1 - 4
Filter/FilterFactoryInterface.php

@@ -11,10 +11,7 @@
 
 namespace Sonata\AdminBundle\Filter;
 
-use Symfony\Component\Form\FormFactory;
-use Sonata\AdminBundle\Admin\FieldDescriptionInterface;
-
 interface FilterFactoryInterface
 {
-    public function create(FieldDescriptionInterface $fieldDescription);
+    public function create($name, $type, array $options = array());
 }

+ 0 - 2
Filter/FilterInterface.php

@@ -11,8 +11,6 @@
 
 namespace Sonata\AdminBundle\Filter;
 
-use Sonata\AdminBundle\Admin\FieldDescriptionInterface;
-
 interface FilterInterface
 {
     /**

+ 0 - 3
Filter/ORM/BooleanFilter.php

@@ -11,9 +11,6 @@
 
 namespace Sonata\AdminBundle\Filter\ORM;
 
-use Doctrine\ORM\QueryBuilder;
-use Symfony\Component\Form\FormFactory;
-use Symfony\Component\Translation\TranslatorInterface;
 use Sonata\AdminBundle\Form\Type\Filter\BooleanType;
 
 class BooleanFilter extends Filter

+ 0 - 3
Filter/ORM/CallbackFilter.php

@@ -11,9 +11,6 @@
 
 namespace Sonata\AdminBundle\Filter\ORM;
 
-use Symfony\Component\Form\FormFactory;
-use Doctrine\ORM\QueryBuilder;
-
 class CallbackFilter extends Filter
 {
     /**

+ 0 - 2
Filter/ORM/Filter.php

@@ -12,8 +12,6 @@
 namespace Sonata\AdminBundle\Filter\ORM;
 
 use Sonata\AdminBundle\Filter\Filter as BaseFilter;
-use Doctrine\ORM\Mapping\ClassMetadataInfo;
-use Symfony\Component\Form\FormBuilder;
 
 abstract class Filter extends BaseFilter
 {

+ 0 - 1
Filter/ORM/ModelFilter.php

@@ -11,7 +11,6 @@
 
 namespace Sonata\AdminBundle\Filter\ORM;
 
-use Doctrine\ORM\QueryBuilder;
 use Doctrine\ORM\Mapping\ClassMetadataInfo;
 
 class ModelFilter extends Filter