日付のセレクトボックスの作り方
開発環境:CakePHP2.5.1
日付のセレクトボックスを作るにはFormヘルパーを使うのが便利です。
ただし、初期状態では日本人には使いにくくなっていますので、少しカスタマイズが必要です。
日付のセレクトボックスの基本
まずは基本的な使い方です。
1 2 3 4 5 |
<?php echo $this->Form->input('birthday', array( 'type' => 'date', )); ?> |
inputメソッドにtypeでdateを渡すだけで日付のセレクトボックスが作れます。
ですが、この状態だとJulyなど月が英語表記になっていて、並び順も月-日-年になっています。
日本的な日付のセレクトボックス
まずは日本的な並び順、そして月を数字に変更しましょう。
1 2 3 4 5 6 7 |
<?php echo $this->Form->input('birthday', array( 'type' => 'date', 'dateFormat' => 'YMD', 'monthNames' => false )); ?> |
dateFormatが並び順、monthNames=falseが英語表記をやめる指定になります。
年の最小値と最大値を指定
上記の例だと誕生日のセレクトボックスなので、年の部分に未来の日付があるのはうれしくありません。
ですので、年の最大値および最小値も指定してみましょう。
1 2 3 4 5 6 7 8 9 |
<?php echo $this->Form->input('birthday', array( 'type' => 'date', 'dateFormat' => 'YMD', 'monthNames' => false, 'maxYear' => date('Y'), 'minYear' => date('Y') - 100, )); ?> |
最大値はmaxYear、最小値はminYearを使えば指定することができます。
ハイフンではなく年月日で表示
デフォルトの状態では年月日がハイフンで区切られています。
それを「年」「月」「日」で区切る形式に変更する方法です。
lib/Cake/View/Helper/FormHelper.phpを改造するので、ファイルをapp/View/Helper/にコピーします。
ファイル内のdateTimeメソッドにある下記の部分を改造します。
1 |
<?php $opt = implode($separator, $selects); ?> |
上記の部分を次のように変更します。
1 2 3 4 5 6 7 8 9 10 11 12 |
<?php $opt = ''; if (is_array($separator)) { $i = 0; foreach($selects as $select) { $opt .= $select . $separator[$i]; $i++; } } else { $opt = implode($separator, $selects); } ?> |
そして、ビュー側で、次のように指定します。
1 2 3 4 5 6 7 8 9 10 |
<?php echo $this->Form->input('birthday', array( 'type' => 'date', 'dateFormat' => 'YMD', 'monthNames' => false, 'maxYear' => date('Y'), 'minYear' => date('Y') - 100, 'separator' => array('年', '月', '日'), )); ?> |
これで年月日の表示が日本語になります。
柴田 篤志
最新記事 by 柴田 篤志 (全て見る)
- WordPressとCakePHPの共存 - 2014年10月22日
- サイトマップの作成方法 - 2014年10月12日
- INSERTしたIDを取得する - 2014年10月4日