1

我在 Windows 7 32 位上使用 CakePHP V. 2.3.4,我正在尝试使用maxYearminYear参数,但我没有得到正确的值,我使用的代码是下一个:

echo $this->Form->input(
    'date_birth',
    array(
        'dateFormat'=>'DMY',
        'minYear'=>date('Y')-100,
        'maxYear'=>date('Y')-18
)

);

cake 显示的值为:Min Year: 1913, Max Year: 2013
正确的值应该是:Min Year: 1913, Max Year: 1995

我也试着说:

echo $this->Form->input(
    'date_birth',
    array(
        'dateFormat'=>'DMY',
        'maxYear'=>date('Y')-18
    )
);

但结果不正确:从 1993 到 2013

请帮我。

4

4 回答 4

2

我发现在输入中添加一个默认值可以解决这个问题;本质上,CakePHP 会将日期条目默认为当前日期,看起来如果您尝试将 maxYear 设置为比默认值更早的值,它会忽略 maxYear 以支持您的默认值。

所以:

echo $this->Form->input(
    'dob',
    array(
        'type' => 'date',
        'selected' => array(
            'year'=>date('Y')-18
        ),
        'minYear' => date('Y') - 100,
        'maxYear' => date('Y') - 18
    )
);
于 2013-07-21T12:30:15.930 回答
0

根据 cakephp 文件

你可以试试下面的代码

echo $this->Form->input('date_birth', array(
    'label' => 'Date of birth',
    'dateFormat' => 'DMY',
    'minYear' => date('Y') - 70,
    'maxYear' => date('Y') - 18,
));

我认为它肯定会为你工作。

于 2013-05-14T04:15:45.680 回答
0

我刚刚使用了当前的主分支(2.3.5)并使用了您的确切片段

$result = $this->Form->input('date_of_birth', array(
    'dateFormat' => 'DMY',
    'minYear' => date('Y') - 100,
    'maxYear' => date('Y') - 18));

并得到:

<div class="input text">
    <label for="date_of_birth">Date Of Birth</label>
    <input name="data[date_of_birth]" dateFormat="DMY" minYear="1913" maxYear="1995" type="text" id="date_of_birth"/>
</div>

我不知道你在做什么。但它看起来肯定不是蛋糕的错……

请注意,自 2.3.4 起,如果您将超出此范围的一年作为预选/默认值传入,则会自动预期值范围,如评论中所述。

于 2013-05-14T14:59:30.107 回答
0

我终于让它按如下方式工作:

<?php echo $this->Form->input('date_birth', array('type'=>'date',
    'label' => 'Date of birth',
    'dateFormat' => 'DMY',
    'empty' => true,
    'minYear' => date('Y')-100,
    'maxYear' =>date('Y')-18,
    )
    );
?>

请注意,解决方案是添加: 'empty' => true

于 2013-05-14T18:03:58.090 回答