Formヘルパーのdatetimeのセレクトボックスで、簡単に下記のような感じで”年月日”区切りにする。
(1) /lib/Cake/View/Helper/FormHelper.phpを、/app/View/Helperにコピーする。 (2)コピーしたFormHelper.phpの、下記の部分を修正する。
//$opt = implode($separator, $selects); $opt = ""; $i = 0; if (is_array($separator)) { foreach($selects as $select) { $opt .= $select.$separator[$i]; $i++; } } else { $opt = implode($separator, $selects); }
(3)コントローラーでdatetime()のオプション配列をつくってビューに渡す
$date_option = array( 'minYear' => 1930, 'maxYear' => date('Y'), 'separator' => array('年','月','日'), 'value' => array('year' => date('Y'),'month' => date('m'),'day' => date('d')), 'monthNames' => false ); $this->set(compact('date_option'));
(4)ビューでdatetime関数を使う
<?php echo $this->Form->dateTime('birthday','YMD','NONE',$date_option)?>
以上です。
ちなみに、今日から1年後まで選択できるようにしたい場合は、オプションを下記のような感じにする。
$start_time_option = array( 'minYear' => date('Y'), 'maxYear' => date('Y', strtotime(date('Y-m-1').' +1 year')), 'separator' => array('年','月','日'), 'value' => array('year' => date('Y'),'month' => date('m'),'day' => date('d')), 'monthNames' => false ); $this->set(compact('start_time_option'));
参考文献: CakePHP1.2 HTMLヘルパーの日付コンボを年月日で表示する 【CakePHP2.2.0】dateTimeで初期値を設定する