Archives by date

You are browsing the site archives by date.

CakePHP2系の$this->fetch()の使い方。

Cake2系におけるデフォルトレイアウトなどを覗くと$this->fetch(‘css’)だったり$this->fetch(‘content’)といった記述が見つかる。
これは任意の文字列をビューの好きな位置で読み込める関数である。但し変数を渡す側もビューから出ないとエラーになるので注意。
主にビューファイルからレイアウトファイルに変数を渡すときなどに使う。
説明するより流れを見たほうが早いかな。使い方は以下みたいな感じ。

まずはレイアウトファイルの変数を出力したい位置にfetch()関数を記述。

<?php echo $this->fetch('str'); ?>

次に、ビュー側からassign()関数を使って特定のキーに変数を渡す。

<?php $this->assign('str', 'hogehogehoge'); ?>

上記の処理を走らせるとレイアウトのフェッチの位置に「hogehogehoge」が出力される。
主な用途としては、ビューから動的にtitleを書き換えたり、読み込むcss, jsを切り替えたりする用かな。
ほかにもエレメントを直接受け渡したりなど色々と応用も利きそうな感じ。
処理の流れとしては、fetch()関数が実行された後にassign()関数を実行しても変数は受け渡されないので注意。必ずassign()、fetch()の順番でなければならない。
またassign()していないビューのソースコードは自動的に$this->fetch(‘content’)にぶち込まれる点も覚えておきたい。実際は大抵この使い方をしてる気がしなくもない。笑