CodeIgniterのカレンダークラス

CodeIgniterのカレンダークラスを使うと簡単に動的なカレンダーを生成することができます。

$this->load->library(‘calendar’);

たったこれだけで簡単に、カレンダークラスを呼び出すことができます。呼び出したカレンダーオブジェクトは、『$this->calendar->generate();』で使用することができます。

それでは実際に作成してみましょう。『application/controllers』フォルダに『calendar_sample.php』ファイルを作成して以下のコードを入力します。

class Calendar_sample extends CI_controller{
 function index()
 {
	$this->load->library('calendar');
	echo $this->calendar->generate();

 }
}

実際にブラウザで確認してみましょう。カレンダーは表示されましたが、その上にエラー表示があります。どうやら『タイムゾーン』が指定されていないので、PHPの方で、勝手に『Asia/Tokyo』に設定しましたよ。と言う意味でしょうか。自動的に設定してくれるのならエラー表示しなくてもいいようなものですが、そんなことを言っても仕方がないので、サーバーのpnp.iniファイルを少々いじります。

同じような症状の出た方は、レンタルサーバーのphp.iniファイルに『date.timezone=Asia/Tokyo』の1行を追加して下さい。それでエラー表示がなくなるはずです。

本題に戻って、このカレンダーは今月を表示してはいますが、これだけでは物足りないです。やはり月を移動するリンクは必要なので、先程のコードを書き換えます。

class Calendar_sample extends CI_controller{
 function index()
 {
	$data = array (
               'show_next_prev'  => TRUE,
               'next_prev_url'   => 'http://ci.builwing.co.jp/calendar_sample/index/'
             );

	$this->load->library('calendar', $data);
	echo $this->calendar->generate($this->uri->segment(3), $this->uri->segment(4));
 }
}

ブラウザで確認してみます。月を移動するリンクが表示され、左側をクリックすれば、前月へ、右側をクリックすれば、翌月へ移動するようになりました。

コードの解説

‘show_next_prev’=>TRUE

前/次の月に移動できるURLを表示するかどうかの機能

‘nex_prev_url’=>’移動するURL’

移動する月のリンクを利用する場合の基準パス

$this->load->library(‘calendar’,$data)

先程は説明しませんでしたが、『$this->load->library();』メソッドは、第二引数に設定項目を配列として、渡すことができます。つまりこれは、上記2つの設定項目を含んだカレンダークラスの呼び出しです。

$this->uri->segment(3)

これは、CodeIgniterのURIクラスで、URIの3つめのセグメントを取り出しています。つまり年の数字を取り出します。

$this->uri->segement(4)

同じく、URIの4つめのセグメント、つまり月の数字を取り出します。

これで、左の矢印リンクをクリックすれば、前月『http://ci.builwing.co.jp/index/2011/07』へ移動し、右の矢印リンクをクリックすれば、翌月『http://ci.builwing.co.jp/index/2011/09』へ移動します。

尚、本日はURIクラスの解説はほとんどしていませんが、そのうちにURIクラスの解説も行いたいと思います。

本日は、ここまでにします。

このエントリーを含むはてなブックマーク Buzzurlにブックマーク livedoorクリップ Yahoo!ブックマークに登録

トラックバック&コメント

この投稿のトラックバックURL:

コメントをどうぞ

このページの先頭へ