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') ?>
というわけで解決しましたとさ。