diff --git a/src/View/Helper/FormHelper.php b/src/View/Helper/FormHelper.php index a549bc6adae..436522061a5 100755 --- a/src/View/Helper/FormHelper.php +++ b/src/View/Helper/FormHelper.php @@ -1972,6 +1972,45 @@ protected function _datetimeOptions($options) { return $options; } +/** + * Generate time inputs. + * + * ### Options: + * + * - `interval` The interval for the minutes select. Defaults to 1 + * - `empty` - If true, the empty select option is shown. If a string, + * that string is displayed as the empty element. + * - `round` - Set to `up` or `down` if you want to force rounding in either direction. Defaults to null. + * - `value` | `default` The default value to be used by the input. A value in `$this->data` + * matching the field name will override this value. If no default is provided `time()` will be used. + * - `timeFormat` The time format to use, either 12 or 24. + * - `second` Set to true to enable seconds drop down. + * + * To control the order of inputs, and any elements/content between the inputs you + * can override the `dateWidget` template. By default the `dateWidget` template is: + * + * `{{month}}{{day}}{{year}}{{hour}}{{minute}}{{second}}{{meridian}}` + * + * @param string $fieldName Prefix name for the SELECT element + * @param array $options Array of Options + * @return string Generated set of select boxes for time formats chosen. + */ + public function time($fieldName, $options = []) { + $options += [ + 'empty' => true, + 'value' => null, + 'interval' => 1, + 'round' => null, + 'timeFormat' => 12, + 'second' => false, + ]; + $options['year'] = $options['month'] = $options['day'] = false; + $options = $this->_initInputField($fieldName, $options); + $options = $this->_datetimeOptions($options); + + return $this->widget('datetime', $options); + } + /** * Sets field defaults and adds field to form security input hash. * Will also add the error class if the field contains validation errors. diff --git a/tests/TestCase/View/Helper/FormHelperTest.php b/tests/TestCase/View/Helper/FormHelperTest.php index 7a74ac2ed22..379183691f5 100755 --- a/tests/TestCase/View/Helper/FormHelperTest.php +++ b/tests/TestCase/View/Helper/FormHelperTest.php @@ -3789,6 +3789,37 @@ public function testCheckboxHiddenField() { $this->assertTags($result, $expected); } +/** + * Test the time type. + * + * @return void + */ + public function testTime() { + $result = $this->Form->time('start_time', array( + 'timeFormat' => 12, + 'interval' => 5, + 'value' => array('hour' => '4', 'minute' => '30', 'meridian' => 'pm') + )); + $this->assertContains('', $result); + $this->assertContains('', $result); + $this->assertContains('', $result); + $this->assertNotContains('year', $result); + $this->assertNotContains('month', $result); + $this->assertNotContains('day', $result); + + $result = $this->Form->time('start_time', array( + 'timeFormat' => 12, + 'interval' => 5, + 'value' => '2014-03-08 16:30:00' + )); + $this->assertContains('', $result); + $this->assertContains('', $result); + $this->assertContains('', $result); + $this->assertNotContains('year', $result); + $this->assertNotContains('month', $result); + $this->assertNotContains('day', $result); + } + /** * testDateTime method *