[CakePHP]$session->flash()内で改行できるようにする

コントローラで$this->Session->setFlash();でメッセージをセットすると、ビューの$session->flash();で出力されますよね?
でも、改行ができなくて困る。と思ったことありません? 今更だけどVer.1.3.13で普通にbrで改行するね。もしかして前からできたんだろうか・・・σ(^_^; )

というわけで、簡単に改行できる方法をメモ。

  1. /cake/libs/view/helpers/session.phpを/app/views/helpersにコピー
  2. session.phpのflash()メソッドの該当箇所を下記のように修正。
    if ($flash['layout'] == 'default') {
        if (!empty($flash['params']['class'])) {
            $class = $flash['params']['class'];
        } else {
            $class = 'message';
        }
        $out = '<div id="' . $key . 'Message" class="' . $class . '">' . $flash['message'] . '</div>';
        // ↑この行を↓のように修正
        $out = '<div id="' . $key . 'Message" class="' . $class . '">' . nl2br($flash['message']) . '</div>';
    } elseif ($flash['layout'] == '' || $flash['layout'] == null) {
        //  省略
    } else {
        // 省略
    }
    // ↓
    
  3. あとはコントローラから$this->Session->setFlash();する際、改行を挟みたい箇所に\nを入れるだけ。

ちなみに$this->flash();に、上記と同じ方法で改行を入れる場合は、/app/views/layouts/flash.ctpの該当箇所を

<?php echo $message; ?>
// ↓以下に修正
<?php echo nl2br($message); ?>

にしてやればOK

もっと簡単な方法、効率的な方法があれば教えていただけると嬉しいです^^

スポンサーリンク
336x280_1
336x280_1

シェアする

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

フォローする

スポンサーリンク
336x280_1