2

我正在使用 CakePHP 2.6.x 为日期类型创建一个简单的输入:-

echo $this->Form->input('datetest', array(
    'label' => false, 
    'type' => 'datetime',
    'dateFormat' => 'YMD', 
    'minYear' => date('Y') - 70, 
    'maxYear' => date('Y') + 10, 
    'selected' => '2012-02-23')
);

此输入以以下格式返回日期dd.mm.yyyy hh:ii:-

<div class="input datetime">
  <input id="ArticleDatetest" class="datetime" type="text" value="23.02.2012 00:00" autocomplete="off" maxyear="2025" minyear="1945" name="data[Article][datetest]">
</div>

预期的日期格式是yyyy-mm-dd hh:ii. 我做错了什么?

4

2 回答 2

1

首先,更改'type' => 'datetime''type' => 'date',

其次,您使用浏览器 html5 原生日期选择器,它会显示您的系统日期时间格式。如果您提交表单数据,您的控制器数据将采用 2015-06-22 格式。

在这里试试

但是,IE、Firefox 等不支持这种输入类型。

解决方案,使用 JS 日期选择器并更改'type' => 'text'

于 2015-06-22T20:17:40.520 回答
1

这在 CakePHP 3 中效果很好:

<?pho echo $this->Form->text('proposal_date', ['type'=>'date', 'value'=>$project->proposal_date->i18nFormat('yyyy-MM-dd')]); ?>

或者您可以使用解决方案https://stackoverflow.com/a/35895954/3813117 ,即:

<?
$this->Form->templates(
  ['dateWidget' => '{{day}}{{month}}{{year}}']
);
  echo $this->Form->input('approval_date', ['type' => 'date']); ?>

它使用浏览器的本机日期选择器。适用于 Firefox、Chrome、Edge。

于 2018-06-30T15:51:10.800 回答