Browse Source

[Form] Fixed DateTimeToArrayTransformer when transforming empty values and the option 'fields' is set

Bernhard Schussek 14 years ago
parent
commit
f0d841ef8c

+ 2 - 2
src/Symfony/Component/Form/ValueTransformer/DateTimeToArrayTransformer.php

@@ -49,14 +49,14 @@ class DateTimeToArrayTransformer extends BaseDateTimeTransformer
     public function transform($dateTime)
     {
         if (null === $dateTime) {
-            return array(
+            return array_intersect_key(array(
                 'year'    => '',
                 'month'   => '',
                 'day'     => '',
                 'hour'    => '',
                 'minute'  => '',
                 'second'  => '',
-            );
+            ), array_flip($this->getOption('fields')));
         }
 
         if (!$dateTime instanceof \DateTime) {

+ 15 - 0
tests/Symfony/Tests/Component/Form/ValueTransformer/DateTimeToArrayTransformerTest.php

@@ -55,6 +55,21 @@ class DateTimeToArrayTransformerTest extends DateTimeTestCase
         $this->assertSame($output, $transformer->transform(null));
     }
 
+    public function testTransform_empty_withFields()
+    {
+        $transformer = new DateTimeToArrayTransformer(array(
+            'fields' => array('year', 'minute', 'second'),
+        ));
+
+        $output = array(
+            'year' => '',
+            'minute' => '',
+            'second' => '',
+        );
+
+        $this->assertSame($output, $transformer->transform(null));
+    }
+
     public function testTransform_withFields()
     {
         $transformer = new DateTimeToArrayTransformer(array(