iPhone/iPadのホーム画面コンテスト開催中!賞品は iTunes カード!

CakePHP & PHP 2008/04/06 11:15

CakePHP FormHelper#datetime()で年月日表示を変える

CakePHP1.2で追加されたFormHelperには日時をプルダウンメニューで選択する機能があります。

PHP:
  1. <?php echo $form->datetime('hoge', 'YMD', 'NONE'); ?>

これで年月日を選択できるのですが、デフォルトだと↓のように月が英語表現で表示されます。

そこで月を数字表現に変更する方法です。

datetimeメソッドはFormHelper#$optionsの値をプルダウンで表示するリストに使用します。(値が無ければデフォルト値を使用)よってこれを書き換えれば任意の値をリストに表示できます。

PHP:
  1. <?php
  2. // 月を数字へ
  3. $form->options['month'] = array();
  4. for ($i = 1 ; $i <= 12 ; $i++) {
  5.   $form->options['month'][$i] = sprintf("%02d", $i)
  6. }
  7. ?>
  8. <?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()もありますが、これらも内部的には同じロジックを共有しているので、同じように指定ができます。



■Related Posts

One Response to “CakePHP FormHelper#datetime()で年月日表示を変える”

  1. on 31 10月 2009 at 20:42 1.cakePHP で 日付時刻入力 « cakePHP,Subversion,Ajaxのメモ said …

    [...] ここを参考に以下のようにしてみた。 [...]

Trackback This Post | Subscribe to the comments through RSS Feed

Leave a Reply