【问题标题】:How to create a HTML5 time input using the CakePHP form helper?如何使用 CakePHP 表单助手创建 HTML5 时间输入?
【发布时间】:2016-04-03 06:13:43
【问题描述】:

我遇到了 cakephp 时间格式问题。我累了,这个问题。当我尝试“类型”=>“时间”时,它会像我的第一个屏幕一样变短。但我想需要像第二个屏幕一样短。

echo $this->Form->input('callback_time', array('label' => false, 'class' => 'callentry_time_formate readonly','data-live-search' => 'true','type' => 'time', 'value' => (!empty($this->request->data['CallEntry']['callback_time'])) ? $this->request->data['CallEntry']['callback_time'] : $callback_time));

屏幕短:1

我想要这张图片下的样子。我该如何解决? 屏幕短:2

屏幕短:3 当我在浏览器中检查元素并更改 type='time' 时,它就像我的 Screen Short: 3 如果我更改 cakephp 助手输入“类型”=>“时间”,那么它看起来像屏幕短:1。我需要的屏幕短:3。但它只适用于检查元素

【问题讨论】:

  • 您的问题不清楚,如果您输入 type ="time" ,那么如果它工作正常,那么您的问题是什么?
  • 当我尝试 type = 'time' 然后它看起来是我的第一张图片,但我想要第二张图片
  • 如果我在 cakephp 输入中使用 type = 'time' 然后它像我的第一个屏幕一样坏了,但我需要像第二个屏幕一样。检查元素中的第二个屏幕
  • 你想把它看成文本字段吗?或者喜欢作为时间选择器?
  • 就像一个时间选择器

标签: html forms cakephp cakephp-2.x


【解决方案1】:

FormHelper::input()type 选项不一定直接转换为 HTML type 属性,而是转换为相应的 FormHelper 小部件/元素,如果是 time,这是多个输入对于各个时间价值成分。

使用FormHelper::text()

如果您需要一个带有type 属性集的<input> 元素,那么您必须直接通过FormHelper::text() 创建该元素,其中type 将映射到HTML 属性,即

$this->Form->text('callback_time', array(
    'type' => 'time',
    // ...
));

当然你会失去FormHelper::input() 提供的魔力,即错误消息、包装器等,然后你必须自己处理。

另见

使用您自己的(扩展的)表单助手

另一种选择是创建您自己的,扩展FormHelper,并实现您自己的类型,或覆盖FormHelper::_getInput()FormHelper::dateTime(),以使内置time 类型使用您需要的元素.这是一个做前者的例子:

app/View/Helper/MyFormHelper.php

App::uses('FormHelper', 'View/Helper');

class MyFormHelper extends FormHelper
{
    public function customTime($fieldName, $options = array())
    {
        $options =
            $this->_initInputField($fieldName, $options) + array('type' => 'time');

        return $this->Html->useTag(
            'input',
            $options['name'],
            array_diff_key($options, array('name' => null))
        );
    }
}

这与上面的基本相同(参见FormHelper::__call(),它正在为FormHelper::text() 调用),即它创建了一个简单的<input> 元素,带有type 属性集,但保留了FormHelper::input() 的魔力提供。

控制器

public $helpers = array(
    'MyForm',
    // ...
);

.ctp 视图模板

$this->MyForm->input('callback_time', array(
    'type' => 'customTime',
    // ...
));

另见

【讨论】:

    【解决方案2】:

    尝试使用 jquery-timepicker 创建时间选择器。

    http://jonthornton.github.io/jquery-timepicker/

    【讨论】:

    • 我已经用过了,但是当我使用 'type' => 'time' 时我想需要 html 输入类型格式,然后它像我的第一个屏幕短一样坏了,但我需要像这样 w3schools.com/html/tryit.asp?filename=tryhtml_input_time
    • 我用过,但它像我的第一个屏幕短但需要像第二个屏幕一样短
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多