[CakePHP2] Controller::flash メソッド

redirectは別ページへ移動する際によく使うが、似たような動作でflashメソッドがある。

flashは別ページへ移動する際に1ページ挟む。

flash() -> リフレッシュページ -> 移動するページ

といった感じで、リフレッシュページを挟む。
(*ちなみに、デバッグモードでは、自動でリフレッシュせずメッセージのリンクをクリックすることになる。)

下記のように書くと。

$this->flash('登録・更新しました。','index');

下記のようにページを一枚挟み、indexアクションへ飛ぶ。

blg20150620-1

仕様では、以下のようになっている。

Controller::flash(string $message, string $url, integer $pause, string $layout)

$messageは表記するメッセージで、$urlは飛び先、$pauseが自動遷移までの待機時間、$layoutで任意のレイアウトを使える。
通常だと、Layoutsディレクトリのflash.ctpが使用される。

味気ないので、ちょっと変えたflash_info.ctpを作ってみて、下記のように記述する。

$this->flash('登録・更新しました。','index',5,'flash_info');

ちょっと変わった。

blg20150620-2

ちなみに、似たような機能で、ページを挟まずに、遷移したページでメッセージを表示させたい場合は、
SessionComponent::setFlash()  を使う。

 

 

Leave a Reply

Your email address will not be published.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>