有没有办法在CakePHP日期表单输入中设置默认日期?

时间:2011-05-12 20:27:55

标签: forms cakephp cakephp-1.3

我有这个:

<?php echo $this->Form->input('Schedule.0.end_date', array(
    'minYear' => date('Y'),
    'maxYear' => date('Y')+5
)); ?>

我想将默认日期设置为今天以外的其他日期。这可能与CakePHP的表单助手有关吗?

我发现了一篇帖子,显示了如何使用TIME - 但通过设置“day”,“month”,“year”来尝试类似的东西什么也没做。

4 个答案:

答案 0 :(得分:13)

您可以使用selected的{​​{1}}参数来实现这一目标。试试这样:

$this->Form->input();

答案 1 :(得分:5)

只是Cake 3 *用户的更新:现在为了预编译datetime字段,使用'default'关键字是必要的:

echo $this->Form->input('datetime', array(
  'label' => 'Date 2',
  'default' => '2015-09-10 06:40:00'
));

答案 2 :(得分:0)

使用&#39;选择&#39;的问题表单助手中的选项,如果您提交表单,则提交的值将被所选值覆盖,因此如果页面由于错误或其他内容而重新加载,则用户将丢失原始提交的内容。

如果尚未设置默认值,我宁愿在控制器中设置默认值,否则将由上次提交填充。

在控制器中:

if (!isset($this->request->data['start_date']))
        $this->request->data['start_date'] = date('Y-m-d', strtotime('-1 month'));

这种方式,用户第一次加载表单时,会显示一个所需的默认值,但如果他们提交表单一次并将其返回给它,则仍会选择其选定的值。

答案 3 :(得分:0)

使用CakePHP 2.x,

echo $this->Form->input('end', array(
     'selected' => array(
         'day' => date('d'), 
         'month' => date('m'), 
         'year' => date('Y'), 
         'hour' => date('h'), 
         'min' => date('i'), 
         'meridian' => date('a')
)));

如果您想用英文单词显示月份数字:

$month = DateTime::createFromFormat('!m', date('m'));
$month->format('F');

echo $this->Form->input('end', array(
     'selected' => array(
         'day' => date('d'), 
         'month' => $month->format('F'), 
         'year' => date('Y'), 
         'hour' => date('h'), 
         'min' => date('i'), 
         'meridian' => date('a')
)));