redirectは別ページへ移動する際によく使うが、似たような動作でflashメソッドがある。
flashは別ページへ移動する際に1ページ挟む。
flash() -> リフレッシュページ -> 移動するページ
といった感じで、リフレッシュページを挟む。
(*ちなみに、デバッグモードでは、自動でリフレッシュせずメッセージのリンクをクリックすることになる。)
下記のように書くと。
$this->flash('登録・更新しました。','index');
下記のようにページを一枚挟み、indexアクションへ飛ぶ。
仕様では、以下のようになっている。
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');
ちょっと変わった。
ちなみに、似たような機能で、ページを挟まずに、遷移したページでメッセージを表示させたい場合は、
SessionComponent::setFlash() を使う。