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









コントローラで$this->Session->setFlash();でメッセージをセットすると、ビューの$session->flash();で出力されますよね?
でも、改行ができなくて困る。と思ったことありません?
というわけで、簡単に改行できる方法をメモ。
最初に書いた方法だと$this->Session->setFlash();の第2引数、$layoutを指定したときに問題があるので修正しました。適当なこと書いてごめんなさいm_ _m
- /cake/libs/view/helpers/session.phpを/app/views/helpersにコピー
- 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 { // 省略 } // ↓ - あとはコントローラから$this->Session->setFlash();する際、改行を挟みたい箇所に\nを入れるだけ。
ちなみに$this->flash();に、上記と同じ方法で改行を入れる場合は、/app/views/layouts/flash.ctpの該当箇所を
<?php echo $message; ?> // ↓以下に修正 <?php echo nl2br($message); ?>
にしてやればOK
もっと簡単な方法、効率的な方法があれば教えていただけると嬉しいです^^
関連する投稿
コメントはまだありません »
RSS feed for comments on this post. トラックバックURL