view blocksの使い方
開発環境:CakePHP2.5.1
レイアウトに出力する内容で、個々のアクションごとに異なった内容を出力したい場合、コントローラー側で個々の設定をセットするという方法もありますが、そうするとコントローラーの肥大化につながってしまいます。
そういう時に使えるのがview blocksになります。
titleタグをアクションごとに変更する例で見ていきましょう。
レイアウトで読み込む設定
レイアウト内で出力したい場所に $this->fetch を記載します。
<title><?php echo $this->fetch('title') . 'サイト名'; ?></title>
ビューで割り当て設定
個々のビューで $this->assign を使って設定します。
<?php $this->assign('title', 'ビューごとのタイトル|'); ?>
view blocksを使うメリット
最初に書いたようにコントローラー側でセットするやり方の場合、レイアウトには変数を記載するので、必ず全コントローラーにその変数がセットされている必要があります。もちろん分岐処理をすることでエラーを回避することもできますが、余分なコードが増えてしまいます。
それに比べ、view blocksの場合は、fetchで指定していても、assignでの設定がなければエラーにならず空として出力されるので、余分なコードを書かなくても済みます。