$form->datetime()を使うと、年月日(または年月日+時間)を選ぶselect要素が簡単に作れる。
echo $form->datetime('cal', 'MDY', 'NONE'); // => Septemper-1-2008
//第3引数をNONE以外すると、時間の選択リストも表示される。(デフォルトは"12")
echo $form->datetime('cal', 'MDY', 24);
オプションとしてarray('monthNames' => false)を渡すと、月の表示が数字になる
echo $form->datetime('cal', 'YMD', 'NONE', null, array('monthNames' => false)); // => 2008-01-1
「日」がゼロ埋めなしなのに「月」だけゼロ埋めされているのが嫌な場合は、あらかじめ$form->month or $form->dayにデータをセットしておく。(参考:CakePHP FormHelper#datetime()で年月日表示を変える | Shin x blog)
array_combineを使ったのはoption要素のvalue属性を表示値と同じにするため。
$form->options['month'] = array_combine(range(1, 12), range(1, 12));
echo $form->datetime('cal', 'YMD', 'NONE'); // => 2008-1-1
デフォルトでは年が現在から前後20年ずつ、大きい順に表示されて煩わしい。
今年と来年を小さい順に表示するにはこんな感じ。
$years = range(date('Y'), date('Y') + 1);
$form->options['year'] = array_combine($years, $years);
echo $form->datetime('cal', 'YMD', 'NONE');
0 件のコメント:
コメントを投稿