ソースを参照

fix update (UPGRADE-2.1.md:180)

Ivan Borzenkov 13 年 前
コミット
707ad14cd2
2 ファイル変更29 行追加9 行削除
  1. 14 4
      Form/Type/ModelReferenceType.php
  2. 15 5
      Form/Type/ModelType.php

+ 14 - 4
Form/Type/ModelReferenceType.php

@@ -17,6 +17,7 @@ use Symfony\Component\Form\FormFactoryInterface;
 use Symfony\Component\Form\AbstractType;
 use Symfony\Component\Form\AbstractType;
 use Symfony\Component\Form\FormInterface;
 use Symfony\Component\Form\FormInterface;
 use Symfony\Component\Form\FormView;
 use Symfony\Component\Form\FormView;
+use Symfony\Component\OptionsResolver\OptionsResolverInterface;
 
 
 use Sonata\AdminBundle\Form\EventListener\MergeCollectionListener;
 use Sonata\AdminBundle\Form\EventListener\MergeCollectionListener;
 use Sonata\AdminBundle\Form\ChoiceList\ModelChoiceList;
 use Sonata\AdminBundle\Form\ChoiceList\ModelChoiceList;
@@ -26,27 +27,36 @@ use Sonata\AdminBundle\Model\ModelManagerInterface;
 
 
 class ModelReferenceType extends AbstractType
 class ModelReferenceType extends AbstractType
 {
 {
-    private $parent;
-
     /**
     /**
      * {@inheritDoc}
      * {@inheritDoc}
      */
      */
     public function buildForm(FormBuilderInterface $builder, array $options)
     public function buildForm(FormBuilderInterface $builder, array $options)
     {
     {
         $builder->prependClientTransformer(new ModelToIdTransformer($options['model_manager'], $options['class']));
         $builder->prependClientTransformer(new ModelToIdTransformer($options['model_manager'], $options['class']));
+}
+
+    public function createBuilder($name, FormFactoryInterface $factory, array $options)
+    {
+        return parent::createBuilder($name, $factory, $options);
         $this->parent = $options['parent'];
         $this->parent = $options['parent'];
     }
     }
 
 
     /**
     /**
      * {@inheritDoc}
      * {@inheritDoc}
      */
      */
-    public function getDefaultOptions()
+    public function getDefaultOptions(OptionsResolverInterface $resolver)
     {
     {
         return array(
         return array(
             'model_manager'     => null,
             'model_manager'     => null,
             'class'             => null,
             'class'             => null,
             'parent'            => 'hidden',
             'parent'            => 'hidden',
         );
         );
+        $compound = function (Options $options) {
+            return $options['parent'];
+        };
+        $resolver->setDefaults(array(
+            'compound' => $compound,
+        ));
     }
     }
 
 
     /**
     /**
@@ -54,7 +64,7 @@ class ModelReferenceType extends AbstractType
      */
      */
     public function getParent()
     public function getParent()
     {
     {
-        return $this->parent;
+        return 'form';
     }
     }
 
 
     /**
     /**

+ 15 - 5
Form/Type/ModelType.php

@@ -19,6 +19,7 @@ use Symfony\Component\Form\AbstractType;
 use Symfony\Component\Form\FormInterface;
 use Symfony\Component\Form\FormInterface;
 use Symfony\Component\Form\FormView;
 use Symfony\Component\Form\FormView;
 use Symfony\Component\OptionsResolver\Options;
 use Symfony\Component\OptionsResolver\Options;
+use Symfony\Component\OptionsResolver\OptionsResolverInterface;
 
 
 use Sonata\AdminBundle\Form\EventListener\MergeCollectionListener;
 use Sonata\AdminBundle\Form\EventListener\MergeCollectionListener;
 use Sonata\AdminBundle\Form\ChoiceList\ModelChoiceList;
 use Sonata\AdminBundle\Form\ChoiceList\ModelChoiceList;
@@ -28,8 +29,6 @@ use Sonata\AdminBundle\Model\ModelManagerInterface;
 
 
 class ModelType extends AbstractType
 class ModelType extends AbstractType
 {
 {
-    private $parent;
-
     /**
     /**
      * {@inheritDoc}
      * {@inheritDoc}
      */
      */
@@ -42,13 +41,17 @@ class ModelType extends AbstractType
         } else {
         } else {
             $builder->prependClientTransformer(new ModelToIdTransformer($options['model_manager'], $options['class']));
             $builder->prependClientTransformer(new ModelToIdTransformer($options['model_manager'], $options['class']));
         }
         }
-        $this->parent = isset($options['parent']) ? $options['parent'] : 'choice';
+    }
+
+    public function createBuilder($name, FormFactoryInterface $factory, array $options)
+    {
+        return parent::createBuilder($name, $factory, $options);
     }
     }
 
 
     /**
     /**
      * {@inheritDoc}
      * {@inheritDoc}
      */
      */
-    public function getDefaultOptions()
+    public function getDefaultOptions(OptionsResolverInterface $resolver)
     {
     {
         $options = array(
         $options = array(
             'template'          => 'choice',
             'template'          => 'choice',
@@ -77,6 +80,13 @@ class ModelType extends AbstractType
             }
             }
         );
         );
 
 
+        $compound = function (Options $options) {
+            return isset($options['parent']) ? $options['parent'] : 'choice';
+        };
+        $resolver->setDefaults(array(
+            'compound' => $compound,
+        ));
+
         return $options;
         return $options;
     }
     }
 
 
@@ -85,7 +95,7 @@ class ModelType extends AbstractType
      */
      */
     public function getParent()
     public function getParent()
     {
     {
-        return $this->parent;
+        return 'choice';
     }
     }
 
 
     /**
     /**