libro
www.tuyano.com
初心者のためのCakePHP2 プログラミング入門

レイアウトを作ろう! (4/4)

作成:2011-11-10 08:03
更新:2011-11-10 08:03

■コントローラーとビューの作成

できあがったレイアウトを利用するには、コントローラーで$this->layoutの値を設定してやるだけです。これは標準のままだと、CakePHPに組み込まれているデフォルトレイアウトを使いますので、必ず自作のレイアウト名に変更しておきます。今回の例なら、
$this->layout = “Sample”;
としておきます。これで画面に、赤を基調としたレイアウトでページが表示されます。この他、レイアウトに表示するためのものとして以下のものを用意しています。(これらは、今回のレイアウトで用意しているもので、CakePHPの機能ではありません)

header_for_layout――ヘッダーに表示するテキスト。
footer_for_layout――フッターに表示するテキスト。

この他、indexページに表示する例として、msgという変数にテキストをsetしてあります。そして、indexで表示するコンテンツとなる「index.ctp」ビューも下のリスト欄に掲載しておきました。設定したmsgの値を出力するだけのシンプルなものです。

実際にアクセスしてみると、msgの値もちゃんと表示されますし、ヘッダーやフッターも問題なく表示されます。レイアウトが、ビューへの値のsetなどに影響を与えていないことがわかるでしょう。

また、コントローラーで出力している内容をよく見てみると、「あるべきものがない」ことに気づいたでしょう。それは、$title_for_layoutと、$content_for_layoutです。これらの値は特に設定していません。が、それでも問題なくページのタイトルとコンテンツは表示されます。

これらのCakePHPに予約されている変数は、ユーザーが設定しカスタマイズすることもできますが、何もしなくともファイル名やクラス名などから自動的に必要な値が設定されるようになっているのです。設定し忘れたからといってコンテンツが表示されない、といった事態にはなりません。ご安心を。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

※indexアクション

  public function index() {
    $this->modelClass = null;
    $this->layout = "Sample";
    $this->set("header_for_layout","Sample Application");
    $this->set("footer_for_layout",
        "copyright by SYODA-Tuyano. 2011.");
    $this->set("msg", "Welcome to my layout!");
  }


※index.ctp

<h1>Index Page</h1>
<p>this is test View.</p>
<p><?php echo $msg; ?></p>

※関連コンテンツ

「初心者のためのCakePHP2 プログラミング入門」に戻る