この記事の所要時間: 約 1分16秒
CakePHP1.2で追加されたFormHelperには日時をプルダウンメニューで選択する機能があります。
<?php echo $form->datetime('hoge', 'YMD', 'NONE'); ?>
これで年月日を選択できるのですが、デフォルトだと↓のように月が英語表現で表示されます。
そこで月を数字表現に変更する方法です。
datetimeメソッドはFormHelper#$optionsの値をプルダウンで表示するリストに使用します。(値が無ければデフォルト値を使用)よってこれを書き換えれば任意の値をリストに表示できます。
<?php // 月を数字へ $form->options['month'] = array(); for ($i = 1 ; $i <= 12 ; $i++) { $form->options['month'][$i] = sprintf("%02d", $i); } ?> <?php echo $form->datetime('hoge', 'YMD', 'NONE'); ?>
これで以下のようになります。
FormHelper#$optionsでは月の他に様々なリストを指定できるので、年を和暦表現する、任意の日のみ選択対象にするなど変更できます。
■指定できるリスト
$options[‘year’] | 年 |
$options[‘month’] | 月 |
$options[‘day’] | 日 |
$options[‘hour’] | 時(12時間表現) |
$options[‘hour24’] | 時(24時間表現) |
$options[‘minute’] | 分 |
$options[‘second’] | 秒 |
$options[‘meridian’] | 午前・午後 |
日時表現としては、FormHelper#time()、FormHelper#input()もありますが、これらも内部的には同じロジックを共有しているので、同じように指定ができます。
- Newer: CakePHP DboSourceをPHP5らしく使う
- Older: CakePHP Model#save()のSELECT文を抑制する
トラックバック:1
- このエントリーのトラックバックURL
- /blog/2008/04/cakephp_formheler_datetime_list.html/trackback
- Listed below are links to weblogs that reference
- CakePHP FormHelper#datetime()で年月日表示を変える from Shin x blog
- pingback from cakePHP で 日付時刻入力 « cakePHP,Subversion,Ajaxのメモ 09-10-31 (土) 20:42
-
[…] ここを参考に以下のようにしてみた。 […]