[CakePHP]一時メッセージのスタイルを切り替える

[CakePHP]一時メッセージのスタイルを切り替える

最近洗濯機を買い換えました。乾燥機能付きの8Kgまで洗えるもので、かなり静かです。tanakaです。

今日はCakePHPで一時メッセージのスタイルを切り替える方法について紹介します。

CakePHPでHTTPセッションをまたいで一時的なメッセージを渡して、表示したいときにはSessionComponent::setFlash()(メッセージをSessionに記憶させる)と、SessionHelper::flash()(Viewでメッセージを表示してSessionから消去)を使います。

このとき、オプションでSession->flash() で出力されるdiv要素のclass属性を設定できます。次に処理成功時、エラー時の表示例を示します

処理成功時の例

コード(Controller内)

$this->Session->setFlash('登録しました', 'default', array('class'=>'message success'));

出力(HTML)

<div class="message success" id="flashMessage">登録しました</div>

ブラウザの表示例

tanaka20120202cakephp_flash02.png

処理失敗時の例

コード(Controller内)

$this->Session->setFlash('登録できませんでした。内容を確認してください', 'default', array('class'=>'message error'));

出力(HTML)

<div class="message error" id="flashMessage">登録できませんでした。内容を確認してください</div>

ブラウザの表示例

tanaka20120202cakephp_flash01.png

また、今の例では、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ヘルパーを使った、一時メッセージのスタイル切り替えの方法について紹介しました。

  • このエントリーをはてなブックマークに追加

この記事を読んだ人にオススメ