我需要生成一年下拉蛋糕,以填充数据库中的ArchiveQuarter.year。目前在数据库中将其设置为“年”,但它与'date'产生相同的结果。
这是当前的设置:
echo $this->Form->input('ArchiveQuarter.year', array(
'label'=>'Year',
'type'=>'date',
'dateFormat'=>'Y',
'minYear'=>'2000',
'maxYear'=>date('Y'),
));
问题在于,这会产生一个范围为1970-2013而不是2000-2013的下拉列表。 minYear确实有效,因为如果你将它设置在1970年以下那么它确实会起作用。
答案 0 :(得分:2)
我将您的代码复制并粘贴到我的CakePHP 2.3.0应用程序中,并按预期工作 - 从2013年到2000年给了我一个选择输入。
也许尝试获取最新版本的CakePHP(您的问题没有列出您正在使用的版本)并试试?
最重要的是,您提供的代码确实有效 - 所以如果不适合您,还有其他因素在起作用。
答案 1 :(得分:0)
我对FormHelper.php文件中的内容进行了一些研究,这是一个细分:
在dateTime()函数中,它检查$ attributes [' value']是否为空。如果是,则使用$ this-> value($ attributes,$ fieldName)填充该信息;填写2013年
2013然后由_GetDateTimeValue()
在_GetDateTimeValue()中,它被解析为数字,并从unix时间转换;到1970年一个半小时。
然后将其设置为最终选择框的值,该选择框必须从minYear扩展到适当容纳。
出于某种原因,Cake没有考虑明确规定的dateFormat =>' Y'何时使用_GetDateTimeValue()进行解析。
解决方案是插入:$selected => strtotime('now')
,最终将正确解析。
您还可以明确地将$ selected设置为日期范围之外的值,我不确定之前是否需要。