CakePHP

CakePHP2.xで、PEARのCalendarを使ってカレンダーを作成してみる。

2015/01/11

カレンダーを利用した、スケジュール管理系のページが必要になったので、PEARのCalendarを使って作成することにしました。

以前(5年ぐらい前)既に作ったことがあるので、そのソースを蔵出ししつつ、CakePHP2.x系(2.3.6)にて作成する方法を忘備録を兼ねたポストで紹介したいと思います。

ライブラリのダウンロードと設置

本体、マニュアル

Package Information: Calendar
http://pear.php.net/package/Calendar/download

Version: 0.5.5。
Release date: 2010-06-24 13:46 UTC

手元にあったのは0.5.4。
あんまりというか全然アップデートされていませんな。

マニュアルはコチラ。
日本語で読みやすいです。
Manual :: Calendar
http://pear.php.net/manual/ja/package.datetime.calendar.php

祝日判定

せっかくなので、PEAR の Date_Holidays_Japan を使い、日本の祝日判定もするようにしてみます。

Date_Holidays_Japan
http://pear.php.net/package/Date_Holidays_Japan

ダウンロードはコチラから
http://pear.php.net/package/Date_Holidays_Japan/download

設置

まずは、ダウンロードした Calendar-0.5.5.tgz 及び、Date_Holidays_Japan-0.1.2.tgz を、app/Vendorに展開。

Vendor/PEAR、Vendor/HOLIDAY ディレクトリは新規作成して下さい。
展開後はこんな感じで。
(2)(3)(4)のファイルについては後述します。

(1) app/Vendor/include_path.php

PEAR Calendarへのパスを設定します。中身は以下の数行だけでOkです。

祝日判定に必要なルーチンの作成

(2)(3)(4)は、日本の祝日判定ルーチンです。
戴いたか、どこかで公開されていたコードを修正とか追加とかしたような気がするのですが、全く思い出せません(えー
せっかくなので、知識の共有ということで公開してみます。
ちなみに、祝日法が改正されたり、天皇陛下が崩御されたりすると修正が必要になります。

ちと長いです。

(2) app/Vendor/HOLIDAY/holidays/ja/holidays.php

(3) app/Vendor/HOLIDAY/holidays/abstract_holidays.php

祝日名取得呼び出しルーチン

(4) app/Vendor/HOLIDAY/holiday.php

祝日名取得ルーチン

以上で、必要な外部ファイルの設置が完了。

app/Controller/SchedulesController.php

ScheduleController を作り、とりあえずはカレンダーの表示をさせてみます。

app/Cntroller/SchedulesController.php

app/View/Schedules/index.ctp

最後にビューファイルを作成。

CSS

適当にCSSも作成します。
参考程度にどうぞ。

サンプル

以上で、このようなカレンダーが表示されます。

サンプルカレンダー 2013 05

サンプルカレンダー 2013 09

手順を覚えれば簡単にできそうですね。

[tgAmazonItemLookup asin="B0051R4ECM" related="1"]

-CakePHP
-, , ,