Parcourir la source

[DoctrineBundle] Fixed: CollectionToChoiceTransformer should accept null values

Bernhard Schussek il y a 14 ans
Parent
commit
e4eb7f720b

+ 5 - 0
src/Symfony/Bundle/DoctrineBundle/Form/ValueTransformer/CollectionToChoiceTransformer.php

@@ -71,6 +71,10 @@ class CollectionToChoiceTransformer extends BaseValueTransformer
      */
     public function transform($value)
     {
+        if (null === $value) {
+            return array();
+        }
+
         $metadata = $this->getOption('em')->getClassMetadata($this->getOption('className'));
         $reflField = $metadata->getReflectionProperty($metadata->identifier[0]);
 
@@ -78,6 +82,7 @@ class CollectionToChoiceTransformer extends BaseValueTransformer
         foreach ($value AS $object) {
             $ids[] = $reflField->getValue($object);
         }
+
         return $ids;
     }
 }

+ 7 - 0
src/Symfony/Bundle/DoctrineBundle/Tests/Form/ValueTransformer/CollectionToChoiceTransformerTest.php

@@ -68,6 +68,13 @@ class CollectionToChoiceTransformerTest extends \Symfony\Bundle\DoctrineBundle\T
         $this->assertEquals(array(), $ids);
     }
 
+    public function testTransformNull()
+    {
+        $transformer = $this->createTransformer();
+
+        $this->assertEquals(array(), $transformer->transform(null));
+    }
+
     public function createTagCollection()
     {
         $tags = new ArrayCollection();