PHP

PHPで祝日/イベント対応のカレンダーを作成。

2012.05.12 / Labs

PHPではPEARなどのライブラリを利用すると簡単にカレンダーを作成できますが、CakePHPなどフレームワークをベースに開発している場合、あまり他のライブラリを利用したくないこともあります。
また祝日情報を含むイベント情報を簡単に組み込めるカレンダーとして、シンプルなカレンダーを作成してみました。
サンプルはこちら

 

機能としては指定月のカレンダーを生成し、イベント情報を配列として渡すことで、該当日にイベント内容を表示することができます。
祝日情報の取得の関数「getHolidays()」については、「Googleカレンダーから祝日情報を取得。」をご覧ください。

CakePHPで利用する場合には、コンポーネントとして登録しておくと使い勝手が良いかもしれません。

Googleカレンダーから祝日情報を取得。

2012.05.12 / Notes

PHPを使ってGoogleカレンダーが提供している祝日の情報を、配列として取得する方法です。

上記のコードで取得した祝日は、次の様に日にちをキーに格納されます。

ただしGoogleカレンダーの祝日は正確ではない部分もあるので、利用の際には注意が必要です。

CakePHPで作るシンプルなアップロードフォーム。

2012.05.08 / Labs

CakePHPでファイルをアップロードするための基本機能のみフォームのサンプルです。使用しているCakePHPのバージョンは2.1.2です。

 

データベースには「uploads」というテーブルを作り、ファイル名を保存するために「file_name」のカラムを設けています。

コントローラーの「UploadsController.php」には、アップロードされたファイル名の一覧のための「index」と、ファイルをアップロードするための「add」アクションを作ります。
(bakeで焼いたものをもとに、手を加えて作成してあります)

ファイルのアップロード処理自体はCakePHP特有のものではなく、通常のPHPの処理になります。途中の「WWW_ROOT」「DS」はCakePHPで用意されている定数で、詳しくはドキュメントページで確認できます。
ここではアップロードされたファイル名のみ、データベースに登録するようにしています。

 

ファイル名一覧のためのビュー「index.php」です。これもbakeで書き出されたものを、さらに簡略化しています。

ファイルをアップロードするためのビュー「add.php」では、フォームのタイプをファイル対応にして、アップロードのためのフォームパーツを出力しています。

モデルの「Upload.php」では、今回は特に処理を行っていません。

上記以外では、「AppController.php」の中で、「Html」と「Form」ヘルパーを読み込んできます。

以上、シンプルなファイルのアップロードフォームの作り方でした。

DrupalでURLエイリアスをもとにテンプレートをアレンジ。

2012.03.02 / Notes

URLエイリアスで指定したパスをもとに、テンプレートで表示方法をアレンジする方法です。個別にCSSでデザインを変更したい場合などに応用できます。

 

テーマ内「template.php」で、ページテンプレートのプリプロセスとして、自身のURLエイリアスをスラッシュで区切って、それぞれを配列に格納しておきます。

上記で「page.tpl.php」テンプレート内で「parts」という変数名で、配列を利用できます。

CakePHP 2.0でユーザーのアクセス権限をチェック。

2011.10.08 / Labs

CakePHP 2.0 RC3でブログのサンプル、ACLを設定した後に、各コントローラーでアクセス権限をViewのテンプレートファイル内(View/Posts/index.ctpなど)でチェックするためのコードメモです。

 

ブログのサンプル、ACLについてはCakePHPマニュアルページの中にあるチュートリアルを参考に設定してみました。(ACLチュートリアルの説明は難解ですね。かなり苦戦しました・・・。)
CakePHPブログチュートリアル(英語)
ACL を制御するシンプルなアプリケーション(英語)

 

チュートリアルで作成したブログのコントローラ「PostsController.php」のbeforeFilter()の中に下記のコードを記述することで、閲覧しているユーザーのアクセス権限をチェックし、「create」「read」「update」「delete」の各アクションの権限の有無を配列にして、Viewへ渡すデータにセットするようにしています。

 

Viewのテンプレート上では次のように利用できます。

ユーザーの権限によって、編集や削除のリンクを、表示/非表示にしたい場合などに使えるかなと思います。
他にもっと良い方法があるかもしれませんが・・・。