[PHP] CakePHP 2.0 で 固定ページ(静的ページ) の作成

高速開発フレームワーク CakePHP CakePHP 2.0

前回に続き、画面を作ってみる。

条件は前回と同様。
・CakePHP 2.0.6
・webroot は http://localhost/cake2.0.6/
・XAMPPを使用

「http://localhost/cake2.0.6/ へアクセスした時の画面の編集」を行う。
ついでに「Controllerを意識しなくてよい簡単なページ作り」を行う。

今回、最も重要な意味を持つのが app/Config/routes.php というファイルだ。
(ただし、今回はそれは編集しないで作ってみる。)

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

この1行は
『http://localhost/cake2.0.6/ へのアクセスがあったら
  http://localhost/cake2.0.6/pages/display/home にアクセスがあったと見なしなさい』
という意味だ。
http://localhost/cake2.0.6/pages/display/home へアクセスするということは、
『’home’をパラメータにしてPagesControllerのdisplayメソッドを実行しなさい。』
と命令することだ。

PagesController は lib/Cake/Controller にある。
displayメソッドはパラメータを render() のパラメータにする。
パラメータが’home’なので、render(‘home’) となる。

PagesController で $this->render(‘home’); を実行すると ~/View/Pages/home.ctp が呼ばれる。
最初は app/View/Pages/home.ctp が無いので
代わりに lib/Cake/View/Pages/home.ctp が呼ばれるようになっている。

ファイル/クラスがロードされる時は lib/Cake/ よりも app/ が優先される。
両フォルダから見て同じ位置に同じファイルがある場合は app/ が優先的に読み込まれる。
この仕組みによって lib/Cake には手を加えなくても
CakePHPをある程度カスタマイズすることが可能となっている。

app/View/Pages/home.ctp を作って中身は「Hello」とでも書いておく。
すると「Hello」とは表示されるが、ヘッダーやフッターも一緒に表示される。

ヘッダーやフッターを表示しているのは lib/Cake/View/Layouts/default.ctp だ。

PagesControllerの親の親である Controller(lib/Cake/Controller/Controller.php)が
『レイアウトは’default’を使う』と言っているのに対して、
親の AppController も、PagesController本人も反論していないので、
View/Layouts/default.ctp が使われることになっている。

デフォルトのレイアウトを変える際は、
Controllerを編集したり lib/Cake/View/Layouts/default.ctp を編集したりするのではなく、
app/View/Layouts/default.ctp を作って編集する。

app/View/Layouts/default.ctp があると、
lib/Cake/View/Layouts/default.ctp は呼ばれない。

デフォルトのレイアウトを変える方法は他にも
app/Controller/AppController.php を作って
$layoutメンバ変数を上書きすることでも実現可能なはず。

class AppController extends Controller { public $layout = 'layoutname'; }

ここまでで「http://localhost/cake2.0.6/ へアクセスした時の画面の編集」は終わりだ。

さて、冒頭でもう一つ述べた「Controllerを意識しなくてよい簡単なページ作り」だが、
これにはPagesControllerのdisplayメソッドを利用する。

その方法は app/View/Pages/ の下に好きな名前でctpファイルを作るだけだ。

仮に example.ctp を作ったならば
URLは http://localhost/cake2.0.6/pages/example となる。
(app/View/Pages/ の配下にフォルダを作ってctpファイルを置いても良い。)

ヘッダーやフッターはほぼ固定になるが、
アイディアと応用次第ではヘッダーやフッターを自由に変えることも可能だろう。

コメント