[CakePHP]一時メッセージのスタイルを切り替える
最近洗濯機を買い換えました。乾燥機能付きの8Kgまで洗えるもので、かなり静かです。tanakaです。
今日はCakePHPで一時メッセージのスタイルを切り替える方法について紹介します。
CakePHPでHTTPセッションをまたいで一時的なメッセージを渡して、表示したいときにはSessionComponent::setFlash()(メッセージをSessionに記憶させる)と、SessionHelper::flash()(Viewでメッセージを表示してSessionから消去)を使います。
- setFlash :: メソッド :: セッション :: 主要なコンポーネント :: マニュアル :: 1.3コレクション
- flash :: セッション :: 主要なヘルパー :: マニュアル :: 1.3コレクション
このとき、オプションでSession->flash() で出力されるdiv要素のclass属性を設定できます。次に処理成功時、エラー時の表示例を示します
処理成功時の例
コード(Controller内)
$this->Session->setFlash('登録しました', 'default', array('class'=>'message success'));
出力(HTML)
<div class="message success" id="flashMessage">登録しました</div>
ブラウザの表示例
処理失敗時の例
コード(Controller内)
$this->Session->setFlash('登録できませんでした。内容を確認してください', 'default', array('class'=>'message error'));
出力(HTML)
<div class="message error" id="flashMessage">登録できませんでした。内容を確認してください</div>
ブラウザの表示例
また、今の例では、Session->flash() の第2引数で'default' を指定していますが、elementsディレクトリ内にテンプレートを用意して、その名前(elements/flash_success.ctpなら、flash_success)を指定することで、出力するタグを完全に制御できます。div要素ではなくp要素で出力したい場合はこの方法を使います。 そのあたりの話が Using Flash for Success and Failure(Cake 1.3の場合)に載っています。 Cake 1.2の場合は、 Using Flash for Success and Failureをご覧ください。 テンプレートファイルを配置する場所が1.3と1.2では異なります。
まとめ
SessionコンポーネントとSessionヘルパーを使った、一時メッセージのスタイル切り替えの方法について紹介しました。