CakePHP1.3系で、以前「[CakePHP]Session::setFlash()したメッセージをオリジナルのレイアウトで表示する | HappyQuality」で書いた方法を試したらそのままでは使えなかったので、1.3で使える方法をメモ。
例によってバージョン2系では、仕様が変わっている可能性があるので注意してください。
コントローラでSession->setFlashのレイアウトを指定する
hoge_controller.php
// 第1引数にメッセージ、第2引数にレイアウト(エレメント)を指定できる(省略された場合はSessionヘルパーのflashメソッドのdefaultソースで吐き出される) // この場合hoge_flash.ctpというレイアウトを使って出力する $this->Session->setFlash("メッセージです", "hoge_template");
/views/elementsにレイアウトファイルを作成する
※以前とは格納場所とメッセージを取得する変数が違っているみたい
app/views/elements/hoge_flash.ctp
// メッセージは$messageに格納されている <div class="message error closeable"> <span class="message-close"></span> <?PHP echo $message; ?> </div>
後はSessionにMessage.flashがある場合に
Session->flash(); ?>
の記述の箇所でflashメッセージが出力される。