7月
15
2009

[CakePHP]Session::setFlash()したメッセージをオリジナルのレイアウトで表示する


先ほどのエントリーに続いてSession::setFlash()だとかの話。
先ほどのエントリー、問題があったので一部修正させていただきましたm_ _m)

調べてみると、Session::setFlash()は第2引数でlayoutを指定できるらしい。。知らなかった…orz
で、使い方ですが、

コントローラで以下のようにレイアウトを指定してSession::setFlash();する。

// Session::setFlash($message, $layout = 'default', $params = array(), $key = 'flash');
$this->Session->setFlash("エラーですよ\n大変なことです", "flash/mylayout");

上記の例だと、レイアウトをflash/mylayoutで指定しているので、
/app/views/layouts/flash/mylayout.ctpを作成して読み込ませます。

肝心のレイアウトファイルからsetFlashしたメッセージを表示する方法ですが、
$content_for_layoutで表示できます。

サンプル:/app/views/layouts/flash/mylayout.ctp

<div class="message">
    <p class="attention">
        <?PHP echo nl2br($content_for_layout); ?>
    </p>
    <p class="inquiry">
        詳細は<?PHP echo $html->link("お問い合わせフォーム", "/inquiry"); ?>よりお問い合わせください。
    </p>
</div>

この方法だと、上記のように$content_for_layoutに対してnl2brしてあげればいいだけですし、
setFlashした内容を表示するブロックに、お問い合わせフォームのリンクを置いたり、ヘルプをセットしたり、ツールチップをセットしてみたり、デザインに凝ってみたり好き勝手できますよね^^

setFlashを調べてたら思わぬ収穫があってラッキーでした。
きっとCakePHPにはまだまだたくさん「知ってれば得をすること」があるんでしょうね。

▼Advertisement

【Webサービスを作ろう!好評連載中!】このエントリーをはてなブックマークに追加 はてなブックマーク -
⇒ #1 挫折しないウェブサービス開発のための4つの心構え
Webサービス、Webアプリケーション開発に興味のある方は必見です!

【2月のイチオシ記事】このエントリーをはてなブックマークに追加 はてなブックマーク -
⇒ 社長になった私がお金にならないデータベースサイトを作った7つの理由

Written by suzuki in: メモ | タグ: ,

コメントはまだありません »

RSS feed for comments on this post.  トラックバックURL


コメントをのこす

| I have been indebted to Aeros Theme. |