Browse Source

Fix issue with array based values and interval.

Fixes #3299
mark_story 13 years ago
parent
commit
c359e4b689

+ 9 - 0
lib/Cake/Test/Case/View/Helper/FormHelperTest.php

@@ -2238,6 +2238,15 @@ class FormHelperTest extends CakeTestCase {
 		$result = $this->Form->input('Model.start_time', array(
 			'type' => 'time',
 			'interval' => 15,
+			'selected' => array('hour' => '3', 'min' => '57', 'meridian' => 'pm')
+		));
+		$this->assertContains('<option value="04" selected="selected">4</option>', $result);
+		$this->assertContains('<option value="00" selected="selected">00</option>', $result);
+		$this->assertContains('<option value="pm" selected="selected">pm</option>', $result);
+
+		$result = $this->Form->input('Model.start_time', array(
+			'type' => 'time',
+			'interval' => 15,
 			'selected' => '2012-10-23 15:57:00'
 		));
 		$this->assertContains('<option value="04" selected="selected">4</option>', $result);

+ 3 - 0
lib/Cake/View/Helper/FormHelper.php

@@ -2197,6 +2197,9 @@ class FormHelper extends AppHelper {
 		if (!empty($attributes['value'])) {
 			if (is_array($attributes['value'])) {
 				extract($attributes['value']);
+				if ($meridian === 'pm') {
+					$hour += 12;
+				}
 			} else {
 				if (is_numeric($attributes['value'])) {
 					$attributes['value'] = strftime('%Y-%m-%d %H:%M:%S', $attributes['value']);