では、作成した
SampleControllerのメソッドを見てみましょう。今回、
indexメソッドでは、たった1行だけが書かれていました。
$this->autoLayout = false;
これは何をやっているのかというと、「
自動レイアウト」という機能をOFFにしているのです。「え? 今回はビューを使うから、そういう設定はしなくていいんじゃないの?」と思った人。ビューを使わないのは、「
autoRender」ですよ。これは、
autoLayout。ちょっと違うんです。何が違うかというと、次のような違いです。
autoRender――画面のレンダリング機能に関するもの。CakePHP2.0では、用意されている画面表示のためのデータを元に、表示するHTMLを生成(これがレンダリング)し、クライアント(Webブラウザとか)に送信する機能があります。この自動レンダリング機能をON/OFFするものです。
autoLayout――画面のレイアウト機能に関するもの。CakePHP2.0には、あらかじめ用意された画面のレイアウトデータをもとに、自動的にページのレイアウトを生成する機能があります。この自動レイアウト機能をON/OFFするものです。
今回は、ビューは使いますが、この自動レイアウト機能をOFFにしています。これをOFFにすると、用意したビューのデータだけを使って(すなわち、レイアウトに関する表示データを組み込む処理などを行わずに)画面を作成します。
では、
autoLayoutをOFFにしないで表示したらどうなるのでしょうか。下のリスト欄のようにファイルの内容を修正してアクセスしてみてください。多分、驚くことでしょう。CakePHPのサイトと同じような雰囲気のページが現れます。
ここでは、
indexアクションメソッドでは、全く何も処理がありません。何もしなくとも、コントローラーとアクションの名前から必要なビューファイルのデータを読み込み、レンダリングして表示するようになっているのですね。
また、
index.ctpの方も変わっていますね。
<html>やヘッダー関係のタグはなくなり、ただ
<body>内に表示するタグだけが記述されています。自動レイアウト機能では、ページの基本的なレイアウトは自動的に生成されるため、ただ「そこに表示するコンテンツ」のタグだけを用意すればいいのです。
とりあえず余計なことを考えず、表示したいことだけタグで書いておけば、後はうまくレイアウトしてくれるのですから、こんな便利なことはありません。レイアウトについてはいずれ改めて触れるとして、しばらくは、このデフォルトのレイアウトを利用させてもらうことにしましょう。