2013-05-13 42 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 
    ) 
);