Selaa lähdekoodia

Merge pull request #678 from benji07/defaultOptions

getDefaultOptions was change and it break everything
Thomas 13 vuotta sitten
vanhempi
commit
39e7a532ae

+ 3 - 5
Form/Extension/Field/Type/FormTypeFieldExtension.php

@@ -139,10 +139,10 @@ class FormTypeFieldExtension extends AbstractTypeExtension
      *
      * @return array
      */
-    public function getDefaultOptions(array $options)
+    public function getDefaultOptions()
     {
         return array(
-            'sonata_admin'     => null,
+            'sonata_admin'             => null,
             'sonata_field_description' => null,
         );
     }
@@ -150,11 +150,9 @@ class FormTypeFieldExtension extends AbstractTypeExtension
     /**
      * Returns the allowed option values for each option (if any).
      *
-     * @param array $options
-     *
      * @return array The allowed option values
      */
-    public function getAllowedOptionValues(array $options)
+    public function getAllowedOptionValues()
     {
         return array();
     }

+ 1 - 1
Form/Type/AdminType.php

@@ -44,7 +44,7 @@ class AdminType extends AbstractType
      * @param array $options
      * @return $options
      */
-    public function getDefaultOptions(array $options)
+    public function getDefaultOptions()
     {
         return array(
             'delete' => true,

+ 2 - 2
Form/Type/BooleanType.php

@@ -27,9 +27,9 @@ class BooleanType extends FormChoiceType
         $this->translator = $translator;
     }
 
-    public function getDefaultOptions(array $options)
+    public function getDefaultOptions()
     {
-        $options = parent::getDefaultOptions($options);
+        $options = parent::getDefaultOptions();
 
         $options['choices'] = array(
             self::TYPE_YES  => $this->translator->trans('label_type_yes', array(), 'SonataAdminBundle'),

+ 1 - 1
Form/Type/CollectionType.php

@@ -31,7 +31,7 @@ class CollectionType extends AbstractType
         $builder->addEventSubscriber($listener);
     }
 
-    public function getDefaultOptions(array $options)
+    public function getDefaultOptions()
     {
         return array(
             'modifiable'    => false,

+ 3 - 3
Form/Type/DateRangeType.php

@@ -32,11 +32,11 @@ class DateRangeType extends AbstractType
         $builder->add('end', 'date', array_merge(array('required' => false), $options['field_options']));
     }
 
-    public function getDefaultOptions(array $options)
+    public function getDefaultOptions()
     {
-        return $options;
+        return array();
     }
-    
+
     public function getName()
     {
         return 'sonata_type_date_range';

+ 3 - 3
Form/Type/DateTimeRangeType.php

@@ -32,11 +32,11 @@ class DateTimeRangeType extends AbstractType
         $builder->add('end', 'datetime', array_merge(array('required' => false), $options['field_options']));
     }
 
-    public function getDefaultOptions(array $options)
+    public function getDefaultOptions()
     {
-        return $options;
+        return array();
     }
-    
+
     public function getName()
     {
         return 'sonata_type_datetime_range';

+ 2 - 6
Form/Type/Filter/ChoiceType.php

@@ -57,15 +57,11 @@ class ChoiceType extends AbstractType
         ;
     }
 
-    public function getDefaultOptions(array $options)
+    public function getDefaultOptions()
     {
-        $defaultOptions = array(
+        return array(
             'field_type'       => 'choice',
             'field_options'    => array()
         );
-
-        $options = array_replace($options, $defaultOptions);
-
-        return $options;
     }
 }

+ 3 - 7
Form/Type/Filter/DateRangeType.php

@@ -49,22 +49,18 @@ class DateRangeType extends AbstractType
             self::TYPE_BETWEEN    => $this->translator->trans('label_date_type_between', array(), 'SonataAdminBundle'),
             self::TYPE_NOT_BETWEEN    => $this->translator->trans('label_date_type_not_between', array(), 'SonataAdminBundle'),
         );
-        
+
         $builder
             ->add('type', 'choice', array('choices' => $choices, 'required' => false))
             ->add('value', 'sonata_type_date_range', array('field_options' => $options['field_options']))
         ;
     }
 
-    public function getDefaultOptions(array $options)
+    public function getDefaultOptions()
     {
-        $defaultOptions = array(
+        return array(
             'field_type'       => 'sonata_type_date_range',
             'field_options'    => array('format' => 'yyyy-MM-dd')
         );
-
-        $options = array_replace($options, $defaultOptions);
-
-        return $options;
     }
 }

+ 3 - 7
Form/Type/Filter/DateTimeRangeType.php

@@ -49,22 +49,18 @@ class DateTimeRangeType extends AbstractType
             self::TYPE_BETWEEN    => $this->translator->trans('label_date_type_between', array(), 'SonataAdminBundle'),
             self::TYPE_NOT_BETWEEN    => $this->translator->trans('label_date_type_not_between', array(), 'SonataAdminBundle'),
         );
-        
+
         $builder
             ->add('type', 'choice', array('choices' => $choices, 'required' => false))
             ->add('value', 'sonata_type_datetime_range', array('field_options' => $options['field_options']))
         ;
     }
 
-    public function getDefaultOptions(array $options)
+    public function getDefaultOptions()
     {
-        $defaultOptions = array(
+        return array(
             'field_type'       => 'sonata_type_datetime_range',
             'field_options'    => array('date_format' => 'yyyy-MM-dd'),
         );
-
-        $options = array_replace($options, $defaultOptions);
-
-        return $options;
     }
 }

+ 2 - 6
Form/Type/Filter/DateTimeType.php

@@ -73,15 +73,11 @@ class DateTimeType extends AbstractType
         ;
     }
 
-    public function getDefaultOptions(array $options)
+    public function getDefaultOptions()
     {
-        $defaultOptions = array(
+        return array(
             'field_type'       => 'datetime',
             'field_options'    => array('date_format' => 'yyyy-MM-dd')
         );
-
-        $options = array_replace($options, $defaultOptions);
-
-        return $options;
     }
 }

+ 4 - 8
Form/Type/Filter/DateType.php

@@ -31,10 +31,10 @@ class DateType extends AbstractType
     const TYPE_LESS_THAN = 5;
 
     const TYPE_NULL = 6;
-    
+
     const TYPE_NOT_NULL = 7;
 
-    
+
     protected $translator;
 
     /**
@@ -73,15 +73,11 @@ class DateType extends AbstractType
         ;
     }
 
-    public function getDefaultOptions(array $options)
+    public function getDefaultOptions()
     {
-        $defaultOptions = array(
+        return array(
             'field_type'       => 'date',
             'field_options'    => array('date_format' => 'yyyy-MM-dd')
         );
-
-        $options = array_replace($options, $defaultOptions);
-
-        return $options;
     }
 }

+ 2 - 6
Form/Type/Filter/DefaultType.php

@@ -38,17 +38,13 @@ class DefaultType extends AbstractType
         ;
     }
 
-    public function getDefaultOptions(array $options)
+    public function getDefaultOptions()
     {
-        $defaultOptions = array(
+        return array(
             'operator_type'    => 'hidden',
             'operator_options' => array(),
             'field_type'       => 'text',
             'field_options'    => array()
         );
-
-        $options = array_replace($options, $defaultOptions);
-
-        return $options;
     }
 }

+ 2 - 6
Form/Type/Filter/NumberType.php

@@ -74,15 +74,11 @@ class NumberType extends AbstractType
      * @param array $options
      * @return array
      */
-    public function getDefaultOptions(array $options)
+    public function getDefaultOptions()
     {
-        $defaultOptions = array(
+        return array(
             'field_type'       => 'text',
             'field_options'    => array()
         );
-
-        $options = array_replace($options, $defaultOptions);
-
-        return $options;
     }
 }

+ 1 - 1
Form/Type/ImmutableArrayType.php

@@ -30,7 +30,7 @@ class ImmutableArrayType extends AbstractType
         }
     }
 
-    public function getDefaultOptions(array $options)
+    public function getDefaultOptions()
     {
         return array(
             'keys'    => array(),

+ 2 - 6
Form/Type/ModelReferenceType.php

@@ -31,17 +31,13 @@ class ModelReferenceType extends AbstractType
         $builder->prependClientTransformer(new ModelToIdTransformer($options['model_manager'], $options['class']));
     }
 
-    public function getDefaultOptions(array $options)
+    public function getDefaultOptions()
     {
-        $defaultOptions = array(
+        return array(
             'model_manager'     => null,
             'class'             => null,
             'parent'            => 'hidden',
         );
-
-        $options = array_replace($defaultOptions, $options);
-
-        return $options;
     }
 
     public function getParent(array $options)

+ 15 - 15
Form/Type/ModelType.php

@@ -17,6 +17,7 @@ use Symfony\Component\Form\FormFactoryInterface;
 use Symfony\Component\Form\AbstractType;
 use Symfony\Component\Form\FormInterface;
 use Symfony\Component\Form\FormView;
+use Symfony\Component\Form\Options;
 
 use Sonata\AdminBundle\Form\EventListener\MergeCollectionListener;
 use Sonata\AdminBundle\Form\ChoiceList\ModelChoiceList;
@@ -37,9 +38,9 @@ class ModelType extends AbstractType
         }
     }
 
-    public function getDefaultOptions(array $options)
+    public function getDefaultOptions()
     {
-        $defaultOptions = array(
+        $options = array(
             'template'          => 'choice',
             'multiple'          => false,
             'expanded'          => false,
@@ -50,21 +51,20 @@ class ModelType extends AbstractType
             'choices'           => null,
             'parent'            => 'choice',
             'preferred_choices' => array(),
+            'choice_list'       => function (Options $options, $previousValue) {
+                if (null === $previousValue) {
+                    return new ModelChoiceList(
+                        $options['model_manager'],
+                        $options['class'],
+                        $options['property'],
+                        $options['query'],
+                        $options['choices']
+                    );
+                }
+            }
         );
 
-        $options = array_replace($defaultOptions, $options);
-
-        if (!isset($options['choice_list'])) {
-            $defaultOptions['choice_list'] = new ModelChoiceList(
-                $options['model_manager'],
-                $options['class'],
-                $options['property'],
-                $options['query'],
-                $options['choices']
-            );
-        }
-
-        return $defaultOptions;
+        return $options;
     }
 
     public function getParent(array $options)

+ 16 - 8
Form/Type/TranslatableChoiceType.php

@@ -17,6 +17,7 @@ use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
 use Symfony\Component\Form\FormInterface;
 use Symfony\Component\Form\FormView;
 use Symfony\Component\Form\FormBuilder;
+use Symfony\Component\Form\Options;
 
 class TranslatableChoiceType extends ChoiceType
 {
@@ -34,11 +35,8 @@ class TranslatableChoiceType extends ChoiceType
      * @param array $options
      * @return array
      */
-    public function getDefaultOptions(array $options)
+    public function getDefaultOptions()
     {
-        $multiple = isset($options['multiple']) && $options['multiple'];
-        $expanded = isset($options['expanded']) && $options['expanded'];
-
         return array(
             'multiple'          => false,
             'expanded'          => false,
@@ -46,8 +44,18 @@ class TranslatableChoiceType extends ChoiceType
             'choices'           => array(),
             'preferred_choices' => array(),
             'catalogue'         => 'messages',
-            'empty_data'        => $multiple || $expanded ? array() : '',
-            'empty_value'       => $multiple || $expanded || !isset($options['empty_value']) ? null : '',
+            'empty_data'        => function (Options $options, $previousValue) {
+                $multiple = isset($options['multiple']) && $options['multiple'];
+                $expanded = isset($options['expanded']) && $options['expanded'];
+
+                return $multiple || $expanded ? array() : '';
+            },
+            'empty_value'       => function (Options $options, $previousValue) {
+                $multiple = isset($options['multiple']) && $options['multiple'];
+                $expanded = isset($options['expanded']) && $options['expanded'];
+
+                return $multiple || $expanded || !isset($options['empty_value']) ? null : '';
+            },
             'error_bubbling'    => false,
         );
     }
@@ -58,12 +66,12 @@ class TranslatableChoiceType extends ChoiceType
         foreach ($options['choices'] as $name => $value) {
             $options['choices'][$name] = $this->translator->trans($value, array(), $options['catalogue']);
         }
-        
+
         // translate empty value
         if (!empty($options['empty_value'])) {
             $options['empty_value'] = $this->translator->trans($options['empty_value'], array(), $options['catalogue']);
         }
-        
+
         parent::buildForm($builder, $options);
     }
 }

+ 18 - 0
Tests/Form/Type/DateTimeRangeTypeTest.php

@@ -0,0 +1,18 @@
+<?php
+
+namespace Sonata\AdminBundle\Tests\Form\Type;
+
+use Sonata\AdminBundle\Form\Type\Filter\DateTimeRangeType;
+use Symfony\Component\Form\Tests\Extension\Core\Type\TypeTestCase;
+
+class DateTimeRangeTypeTest extends TypeTestCase
+{
+    public function testGetDefaultOptions()
+    {
+        $stub = $this->getMock('Symfony\Component\Translation\TranslatorInterface');
+
+        $formType = new DateTimeRangeType($stub);
+
+        $this->assertTrue(is_array($formType->getDefaultOptions()));
+    }
+}