UNIX的なアレ

UNIX的なこととかいろいろ

viewからlayoutファイルの変数をセットする方法

CakePHPにで、各Viewから親となるLayoutファイルをちょっといじりたいときはまれにあると思います。JavascriptファイルをやCSSファイル追加したりするときは簡単です。しかし、変数をセットすることがうまくできず困っていました。
ありがちな例としては、以下のような時だと思います。

<html>
<body class="foo">
 〜 中略 〜
</body>
</html>

このように、bodyにページごとにことなるclassが指定してあるとちょっとやり方を考える必要があります。controllerで指定すれば簡単にできますが、Viewに関わる部分なのでできればView内で指定したいところでした。
調べたところ、setを使えばできるようですね。例は以下の通り。

  • app/views/layout/default.ctp
<html>
<body class="<?php echo $class ?>">
<?php echo $content_for_layout ?>
</body>
</html>
  • app/view/(controller)/(action).ctp
<?php $this->set('class','foo') ?>

というわけで解決しましたとさ。