CakePHP日期选择的默认值

时间:2011-12-31 12:57:49

标签: php cakephp cakephp-2.0

我有一组选择出生日期:

<?php echo $this->Form->input('Profile.dob', array('label' => 'Date of Birth'
                                    , 'dateFormat' => 'DMY'
                                    , 'minYear' => date('Y') - 100
                                    , 'maxYear' => date('Y') - 13)); ?>

并希望将选项中的默认值设置为“DAY MONTH YEAR”。

我已设法通过以下方式执行此操作:

<?php echo $this->Form->input('Profile.gender', array('label' => 'Gender', 'type' => 'select',
         'options' => array('Male'=>'Male','Female'=>'Female'),'empty'=>'Select Sex')); ?>

但我不知道如何使用自动日期输入...

有人可以帮忙吗?感谢

7 个答案:

答案 0 :(得分:13)

只需添加:

'selected'=>date('Y-m-d')

到您的选项数组。

该示例将显示当前日期。如果需要静态日期,请根据需要进行更换。例如:

'selected'=>'2011-12-10'

显然,对于日期和时间,请使用:

'selected'=>date('Y-m-d H:i:s')

'selected'=>'2011-12-10 11:13:45'

答案 1 :(得分:8)

这种方式有效:

<?php 
echo $this->Form->input(
    'Profile.dob', 
    array(
        'label'         => 'Date of Birth',
        'dateFormat'    => 'DMY',
        'minYear'       => date('Y') - 100,
        'maxYear'       => date('Y') - 13,
        'empty'         => array(
            'day'       => 'DAY',
            'month'     => 'MONTH',
            'year'      => 'YEAR'
            )
        )
    ); 
?>

答案 2 :(得分:2)

如果您不介意另外两行,您可以尝试这样做吗?

<?php
echo $this->Form->year('Profile.dob', date('Y') - 100, date('Y') - 13, array('empty' => "YEAR"));
echo $this->Form->month('Profile.dob', array('empty' => "MONTH"));
echo $this->Form->day('Profile.dob', array('empty' => 'DAY'));

?>

答案 3 :(得分:2)

我在上面的cakephp 2.0中实现了这个

echo $this->Form->dateTime('dob', 'DMY','', array(
    'value'=>'1987-02-12',
    'empty'=>false,
    'label'=>'Date Of Birth',
    'minYear'=>date('Y')-60,
    'maxYear'=>date('Y')-15)
);

'value'属性已经在2.0 api的cakephp之后添加,'selected'被删除。

Cakephp手册说:$ selected参数已从FormHelper中的几个方法中删除。现在所有方法都支持$ attributes ['value']键,应该用它代替$ selected。此更改简化了FormHelper方法,减少了参数的数量,并减少了$ selected创建的重复项。受影响的方法是:

FormHelper::select()
FormHelper::dateTime()
FormHelper::year()
FormHelper::month()
FormHelper::day()
FormHelper::hour()
FormHelper::minute()
FormHelper::meridian()

答案 4 :(得分:2)

另外,你真的确定你的意思吗?

您似乎混淆了默认值和空值。如果您使用“已选择”将默认值设置为DAY MONTH YEAR,则您的代码将无效,因为DAY MONTH YEAR不是有效日期。 使用

'empty' => array(
  'day' => 'DAY',
  'month' =>'MONTH',
  'year' =>'YEAR'
);

看起来就像您要找的那样,邀请用户输入日期。

答案 5 :(得分:0)

如果相应的日期请求数据为空,则将Cakephp set设置为空值,因此只需在回显日期输入字段之前将其设置为null:

$this->request->data['Profile']['dob'] = null;

echo $this->Form->month('Profile.dob', array('empty' => "MONTH"));
// do the same for year and day

将在输入表格中预先选择空值(在您的情况下为“DATE”,“MONTH”,“YEAR”字段)

答案 6 :(得分:0)

这是目前在cakephp 2.5中使用的内容:

HashSet

);

这是一个更详细的说明,它会为您提供一个设置为当月第一天的默认值。年份的可能值介于当前和未来5年之间,按升序显示。

更完整:

echo $this->Form->input('fecha_pos_fijacion', array(
    'label' => 'Fecha de fijación',
    'dateFormat' => 'DMY',
    'minYear' => date('Y'),
    'maxYear' => date('Y')+5,
    'orderYear' => 'asc',
    'selected' => date('Y-m-1')
    )

此处默认为下一个月的第一天