2008年9月16日火曜日

CakePHP 1.2 のFormHelperで日付選択リストを作る

$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 件のコメント:

ブログ アーカイブ

tags