ここまでPHPやCakePHPを勉強してきましたが,コードらしいコードを全然書いていません。これではいけない。そろそろ準備段階を終えてPHPでコーディングしなければと思い立ち,一つ書いてみました。
書いたのは,カレンダーを表示するHelperです。最初にコーディングするのがHelperというのも,変わり者っぽいですが,CakePHPよりもPHPになれる意味合いが強いです。
カレンダーヘルパー(CalendarHelpher)の仕様
- 横一列に1週間が表示される普通に市販されているようなカレンダーを一月分表示することができる
- 祝祭日を判断し休日のセルの書式を変更できる
- 祝祭日や登録したスケジュールをセルの中に表示できる
- カレンダーの大きさは大中小の3段階を選択できる
- cssを変更することで表示書式を自由に変更できる
とおよそこのような機能を持つHelperです。
ソースをダウンロードする(バグだらけの可能性があります)
使用法
ダウンロードしたファイルを解凍して出てきたcalendar.phpをappフォルダのviews/helpersフォルダにコピーします。
同じくcalendar.cssをappフォルダのwebroot/cssにコピーします。
controllerで$helpersの中にCalendarを加えます。
var $helpers = array('Html','Calendar');
cssを有効にするために,layoutまたは表示するthtmlファイルでcssファイルを読み出す記述をします。
<?php echo $html->css('calendar');?>
カレンダーを表示するビューには,
$calendar->showCalendar(2008, 5);
とするとカレンダーが表示されます。カレンダーの大きさを変えたい場合はsetTableSizeメソッドで変更してからshowCalendarを呼び出します。サイズの初期値はmです。
$calendar->setTableSize('m'); // 標準のサイズ $calendar->setTableSize('s'); // 小さいサイズ $calendar->setTableSize('l'); // 大きいサイズ
カレンダーに祝祭日やスケジュールを表示するにはフラグを設定します。
$calendar->showSaijitsu = true; // 祝祭日を表示します $calendar->showSchedule = true; // スケジュールを表示します
スケジュールは,addScheduleメソッドで登録します。
$calendar->addSchedule($year,1,7,'新年会');
このような感じです。次のようなthtmlを記述して表示させますと
<?php $year = 2008; echo "<h2>$year 年のカレンダー</h2>"; $calendar->showSaijitsu = true; $calendar->showSchedule = true; $calendar->setTableSize('s'); $calendar->addSchedule($year,1,7,'新年会'); $calendar->addSchedule($year,1,15,'ミーティング'); $calendar->showCalendar($year,1); ?>
次のようなカレンダーが表示されます。

サイズをsにして,祝祭日などを表示させないようにすると次のように小さくシンプルになります。

書式については,calendar.cssというcssファイルを作りました。このcssを編集することでカレンダーのデザインを自分好みに変更できます。
作ってみて
第○月曜日とか振替休日とか春分・秋分の日にも対応していますので結構便利に使えると思います。もともとはVBAで作成していた万年カレンダーをPHPに移植してみました。PHPのイロハもまだな僕にとっては,何かある度にオンラインマニュアルやらGoogleの世話になりました。制御構造文ひとつの書き方にしても,試行錯誤の繰り返しでした。しかしテスト用のviewファイルにコーディングしたり,それをまとめてHelperに仕上げることでPHPでのコーディングに少しは慣れることができたように思います。