10 Feb 2015

[CakePHP2] date / datetime / year フィールドで和暦の年を併記する

CakePHPのフォーム自動生成、超便利です。
日付に和暦が表示されて欲しいとき、この自動生成の中で勝手に変換されたら、最高です。
要はこんな感じで。
相変わらずでっちあげですが、
/app/View/Helper フォルダにFormHelper.php をコピーします。
_generateOptions というのがオプションを生成してる箇所になるんで、


case 'year':
(中略)
    for ($i = $min; $i <= $max; $i++) {
        $data[$i] = $i;
    }
(中略)
    break;
の箇所を
for ($i = $min; $i <= $max; $i++) {
    $wareki = 0;
    if ($i > 1988) {
        $wareki = $i - 1988;
        $data[$i] = "${i}年(平成${wareki}年)";
    } elseif ($i > 1925) {
        $wareki = $i - 1925;
        $data[$i] = "${i}年(昭和${wareki}年)";
    } elseif ($i > 1911) {
        $wareki = $i - 1911;
        $data[$i] = "${i}年(大正${wareki}年)";
    } elseif ($i > 1867) {
        $wareki = $i - 1867;
        $data[$i] = "${i}年(明治${wareki}年)";
    } else {
        $data[$i] = "${i}年";
    }
}
に置き換えます。

表示はお好みで。