Browse Source

Merge pull request #8547 from cakephp/issue-8530

Allow time inputs to have '' values.
Mark Story 10 years ago
parent
commit
8a60b5497c

+ 2 - 2
src/View/Widget/DateTimeWidget.php

@@ -228,7 +228,7 @@ class DateTimeWidget implements WidgetInterface
                 $dateArray = [
                     'year' => '', 'month' => '', 'day' => '',
                     'hour' => '', 'minute' => '', 'second' => '',
-                    'meridian' => 'pm',
+                    'meridian' => '',
                 ];
                 $validDate = false;
                 foreach ($dateArray as $key => $dateValue) {
@@ -244,7 +244,7 @@ class DateTimeWidget implements WidgetInterface
                     if (!isset($dateArray['second'])) {
                         $dateArray['second'] = 0;
                     }
-                    if (isset($value['meridian'])) {
+                    if (!empty($value['meridian'])) {
                         $isAm = strtolower($dateArray['meridian']) === 'am';
                         $dateArray['hour'] = $isAm ? $dateArray['hour'] : $dateArray['hour'] + 12;
                     }

+ 21 - 0
tests/TestCase/View/Widget/DateTimeWidgetTest.php

@@ -782,6 +782,27 @@ class DateTimeWidgetTest extends TestCase
     }
 
     /**
+     * Test rendering 12 hour widgets with empty options and no value.
+     *
+     * @return void
+     */
+    public function testRenderHourWidget12Empty()
+    {
+        $result = $this->DateTime->render([
+            'val' => ['hour' => '', 'minute' => '', 'meridian' => ''],
+            'year' => false,
+            'month' => false,
+            'day' => false,
+            'hour' => ['format' => 12, 'empty' => '--'],
+            'minute' => ['empty' => '--'],
+            'second' => false,
+            'meridian' => ['empty' => '--'],
+        ], $this->context);
+        $this->assertContains('<option value="" selected="selected">--</option>', $result);
+        $this->assertNotRegExp('/value="\d+" selected="selected"/', $result);
+    }
+
+    /**
      * Test rendering hour widget in 12 hour mode at midnight.
      *
      * @return void