CakePHPのトップページをサイトトップとして利用したい時

2011年 あけましておめでとうございます。

2011年もぼちぼち自分のペースで更新して行きたいな、って思ってます。
本年もどうぞ宜しくお願いします_(..)_

・・・というワケで、早速2011年最初の記事内容に移りますね。

CakePHPをインストールして、モデル作って、コントローラ作って、ビューを作って・・・ってやってたんですが、はて?そういえばこのCakeのトップページをサイトトップとして利用する時にはどうするんだろう?と疑問が湧いたのでやってみました。

そして、トップページは静的ではなく、ちょっとプログラムも使います。
という事は、トップページ用のコントローラが必要になるわけです。
http://sitetop/controller/~ の形式だと、/app 以下にコントローラ用ファイルを用意して、
/controller/app/views/controller_name/index.ctp で良いんですが。。。

結論としては、トップへのアクセス設定と、ビューの用意。
必要に応じてコントローラを拡張すること、で出来ました。

ルートの設定は routes.php で

▼\app\config\routes.php:29行目辺り
トップへのアクセス設定を書き換える事で、任意のコントローラのアクションを指定する事が出来ます。
デフォルトでは、pagesコントローラのdisplayアクションで、homeビュー・ファイルを指定してあります。
それを、例えば以下のように書き換えてみます。

//	Router::connect('/', array('controller' => 'pages', 'action' => 'display', 'home'));
	Router::connect('/', array('controller' => 'pages', 'action' => 'index'));

これで、
▼/app/views/pages/index.ctp というファイルを用意すると、このビューが使われるようになります。

コントローラの用意

以下のファイルをコピーして、/app/controllers/ の中にコピーします。
/cake/libs/controller/pages_controller.php
もともと書いてある diplay() アクションは、ざっくり削除 or コメントアウト。
そして、index() アクションを作成。。。これで出来ました!丶(・ω・)ノ

ところが・・・/app/views/pages/index.ctp で書いてる

<?php echo $this->Session->flash(); ?>

の箇所でエラーが出ます。。。なぜに?(´・ω・`)
というワケで、もとの pages_controller.php を良く良く見てみると、helperにSession指定がっ!!

var $helpers = array('Html', 'Session');

なので、コピーして作成したコントローラでもhelperにSession指定を書き加えてみました。
これでエラー解消。。。良かった。

という事で、サイトのトップ指定が出来るようになりました。
練習としてiphone用のWebアプリを作っていたので、この時、トップを指定したかったのでこういった作業が必要になりました。

あとがき

ここではpagesコントローラを拡張したのですが、そもそもコントローラの初期拡張って AppContoller ・・・という事は、pages_controller を使うよりも、app_controller使う方が良いのかなぁ。。。どうする方が良いんだろ?(・ω・)
app_controller はそもそも中身空っぽだし、こっちでやる方が良いんでしょうかね。
という疑問が湧いてるところです。。。

【参考情報】
Routesの設定 :: 環境設定 :: CakePHPによる開発 :: マニュアル :: 1.2コレクション :: The Cookbook

▲ to Top

トラックバック(0)

▲ to Top