2013-05-13 63 views
1

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

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年

请帮帮我。

+1

你尝试最新的2.3.5版本?最近有一些错误修正方向。也许最新的主分支不再有这个问题了? – mark 2013-05-13 23:50:40

+0

您使用的是什么版本的PHP?什么'var_dump(date('Y',strtotime(' - 100 years')));'输出? – 2013-05-14 01:02:31

+0

@mark我更新蛋糕到最新的2.3.5,相同的结果。 – Noe7sv 2013-05-14 14:37:40

回答

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

0

按照CakePHP的文件

你可以试试下面的代码

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

我认为这将确保为你工作。

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的值范围是自动预期的,如上面在注释中指出的,如果你在这个范围之外的一年通过预选/默认值。

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 
    ) 
);