我在Windows 7 32位上使用CakePHP V. 2.3.4,我正在尝试使用maxYear
和minYear
参数,但我没有得到正确的值,我的代码使用是下一个:
echo $this->Form->input(
'date_birth',
array(
'dateFormat'=>'DMY',
'minYear'=>date('Y')-100,
'maxYear'=>date('Y')-18
)
);
蛋糕显示的值为:最小年份:1913年,最大年份:2013年 正确的值应为:最小年份:1913年,最大年份:1995年。
我还试着说:
echo $this->Form->input(
'date_birth',
array(
'dateFormat'=>'DMY',
'maxYear'=>date('Y')-18
)
);
但结果不正确:从1993年到2013年。
请帮帮我。
答案 0 :(得分: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
)
);
答案 1 :(得分:0)
根据cakephp文件
你可以尝试下面的代码
echo $this->Form->input('date_birth', array(
'label' => 'Date of birth',
'dateFormat' => 'DMY',
'minYear' => date('Y') - 70,
'maxYear' => date('Y') - 18,
));
我认为它一定会对你有用。
答案 2 :(得分: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以来,如果您将此范围之外的一年传递为预选/默认值,则会在评论中如上所述自动预期值范围。
答案 3 :(得分: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