CakePHP コントローラのflash メソッド
データを更新した後などに「更新しました」などのメッセージを簡単に出せるのがコントローラのflash メソッド。
コントローラで、
$this->flash('更新しました', '/users');
などとすることにより、メッセージを簡単に出せる。
2つ目の引数は飛び先URL を指定できる。
ちなみにこの flash メソッドは下記のようになっています。
/cake/libs/controller/controller.php
function flash($message, $url, $pause = 1) { $this->autoRender = false; $this->autoLayout = false; $this->set('url', $this->base . $url); $this->set('message', $message); $this->set('pause', $pause); $this->set('page_title', $message); if (file_exists(VIEWS . 'layouts' . DS . 'flash.thtml')) { $flash = VIEWS . 'layouts' . DS . 'flash.thtml'; } elseif ($flash = fileExistsInPath(LIBS . 'view' . DS . 'templates' . DS . "layouts" . DS . 'flash.thtml')) { } $this->render(null, false, $flash); }
上のソースを見ると分かるように、この flash メソッドのレイアウトは
$layout = "hoge";
とか指定しても指定したレイアウトでは表示されません。
flash メソッドでは flash.thtml というレイアウトを使用することしかできません。
/app/views/layouts/flash.thtml
を探してなければ、
/cake/libs/view/templates/layouts/flash.thtml
のデフォルトのレイアウトを使用します。
また、デフォルトの flash.thtml は
<html xmlns="http://www.w3.org/1999/xhtml"> <head> <title><?php echo $page_title?></title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <?php if(Configure::read() == 0) { ?> <meta http-equiv="Refresh" content="<?php echo $pause?>;url=<?php echo $url?>"/> <?php } ?> <style><!-- P { text-align:center; font:bold 1.1em sans-serif } A { color:#444; text-decoration:none } A:HOVER { text-decoration: underline; color:#44E } --></style> </head> <body> <p><a href="<?php echo $url?>"><?php echo $message?></a></p> </body> </html>
のようになっていて、
DEBUG モードで DEBUG = 0 を指定していると meta タグを利用して勝手に画面遷移します。DEBUG モードが 0 以外の場合はメッセージをクリックすると指定したURLに画面遷移します。
非常にシンプルなレイアウトですので、使用するときは、
/app/views/layouts/flash.thtml
にコピーしてカスタマイズした方がよいでしょう。
関連する投稿
2 comments
コメントをどうぞ
Additional comments powered by BackType
[...] こちらのサイトを参照 カテゴリー: 未分類 タグ: 閲覧回数 1 回 コメント (0) トラックバック (0) コメントをどうぞ トラックバックURL [...]
3civilian…
…