Browse Source

merged branch stloyd/datetime_fix (PR #1426)

Commits
-------

f4c7333 Fix populating seconds when option "with_seconds" is set to false

Discussion
----------

[Form][DateTimeType] Fix invalid data when "with_seconds" = false

Fix populating seconds when option `with_seconds` is set to `false`.
Fabien Potencier 14 years ago
parent
commit
1dcd48486d

+ 5 - 2
src/Symfony/Component/Form/Extension/Core/Type/DateTimeType.php

@@ -33,7 +33,10 @@ class DateTimeType extends AbstractType
         $parts = array('year', 'month', 'day', 'hour', 'minute');
         $timeParts = array('hour', 'minute');
 
+        $format = 'Y-m-d H:i:00';
         if ($options['with_seconds']) {
+            $format = 'Y-m-d H:i:s';
+
             $parts[] = 'second';
             $timeParts[] = 'second';
         }
@@ -43,7 +46,7 @@ class DateTimeType extends AbstractType
         }
 
         if ($options['widget'] === 'single_text') {
-            $builder->appendClientTransformer(new DateTimeToStringTransformer($options['data_timezone'], $options['user_timezone'], 'Y-m-d H:i:s'));
+            $builder->appendClientTransformer(new DateTimeToStringTransformer($options['data_timezone'], $options['user_timezone'], $format));
         } else {
             // Only pass a subset of the options to children
             $dateOptions = array_intersect_key($options, array_flip(array(
@@ -98,7 +101,7 @@ class DateTimeType extends AbstractType
 
         if ($options['input'] === 'string') {
             $builder->appendNormTransformer(new ReversedTransformer(
-                new DateTimeToStringTransformer($options['data_timezone'], $options['data_timezone'], 'Y-m-d H:i:s')
+                new DateTimeToStringTransformer($options['data_timezone'], $options['data_timezone'], $format)
             ));
         } else if ($options['input'] === 'timestamp') {
             $builder->appendNormTransformer(new ReversedTransformer(

+ 2 - 2
tests/Symfony/Tests/Component/Form/AbstractLayoutTest.php

@@ -934,7 +934,7 @@ abstract class AbstractLayoutTest extends \PHPUnit_Framework_TestCase
 '/input
     [@type="text"]
     [@name="name"]
-    [@value="2011-02-03 04:05:06"]
+    [@value="2011-02-03 04:05:00"]
 '
         );
     }
@@ -953,7 +953,7 @@ abstract class AbstractLayoutTest extends \PHPUnit_Framework_TestCase
 '/input
     [@type="text"]
     [@name="na&me"]
-    [@value="2011-02-03 04:05:06"]
+    [@value="2011-02-03 04:05:00"]
 '
         );
     }

+ 1 - 1
tests/Symfony/Tests/Component/Form/Extension/Core/Type/DateTimeTypeTest.php

@@ -170,7 +170,7 @@ class DateTimeTypeTest extends LocalizedTestCase
             'widget' => 'single_text',
         ));
 
-        $form->bind('2010-06-02 03:04:00');
+        $form->bind('2010-06-02 03:04:05');
 
         $this->assertEquals('2010-06-02 03:04:00', $form->getData());
         $this->assertEquals('2010-06-02 03:04:00', $form->getClientData());