cakePHP1.3再入門#3 ドキュメントルートとトップページ

さてさて、トップページを表示させることは出来たのですが、基本的にトップページが他のページと少し違うレイアウトだったり、ただのインデックスページってこともありますから静的なページを表示することもありえます。

MVCでデータベースに紐づいたページに必ずなるとは限りませんよね。一部新しいお知らせとかが入るくらいで。
今回構築しているシステムでは、トップページはPC用はシステムの案内としようか、それとも直接サービスが使えるようにするか迷ってます。そんな感じなので、まずルーティングについて再確認しておこうと思います。

最初の読込み
http://localhost/ktai/というurlでアクセスしたら、/index.phpをまず読み込みますが、ここに他のソースが読込まれます。

	require APP_DIR . DS . WEBROOT_DIR . DS . 'index.php';

appディレクトリのwebrootディレクトリですから、/app/webroot/index.phpを読み込みます。
このなかで/cake/bootstrap.phpをインクルードしている。

エントリポイントについてはここの説明がよくわかる。

このbootstrap.phpからConfigure クラスをインスタンス化している。このときに/app/config/core.phpと/app/config/bootstrap.phpが呼ばれている。
ああ、おんなじ名前が多くて混乱する。
そのあと/cake/dispacher.phpを読んでいる。ここでbaseurlなどを決めているようだ。
これに/app/config/route.phpが絡んでいる。

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

pagesコントローラのディスプレイactionでhomeを呼べとなっている。
やっと、ここまで来た。

これはデフォルトでは/cake/libs/controller/pages_controller.phpのなかのdisplayメソッドが使われる。
このように固定されていると中々不自由です。

/app/config/route.phpを書き換えてcontrollerやaction などを書き換える方法もあります。
また呼ばれるテンプレートのhome.ctpの中でレイアウト変更も出来ますね。

home.ctp

<?php
    $this->layout = "main";
    $this->pageTitle = "携帯用タイトル";
?>

/app/views/layoutsにmain.ctpを作っておけばOKです。home.ctpでレイアウトだけ指定して何も書かなければmain.ctpの静的なページになりますね。

認証などでbeforeFilterを加えたりする場合は、/cake/libsにあるpages_controller.phpを
/app/controller/にコピーして書き換えると自由に出来ます。


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です