LoginSignup
2
2

More than 5 years have passed since last update.

jQuery.notifyBarでCakePHPのフラッシュメッセージを表示させる

Last updated at Posted at 2014-03-04

CakePHP+jquery.notifyBar

どっちも自分的にはよく使うので
備忘録として。

View/Layoutファイルに記述しておくと以後あまり意識しなくてすむ。

Session->flash() でメッセージを取得して
あとはjsでかきこんでやる。

ポイントとしてはerrorの時はnotifyBarを勝手に閉じないようにすることと、CSSクラスをかえてやること。
もっと状況でやりようはあるけど、とりあえず。
AppContorller に

function _flashSucess($message) {
$this->Session->setFlash($message,'default', array('class' => 'success'));
}
function _flashError($message) {
$this->Session->setFlash($message,'default', array('class' => 'error'));
}

というように作っておくと汎用的に使いやすいかも。
$messageは、メッセージ内容によるがどっかでエスケープしとかないと
クォートが重なってjavascriptのエラーがでることも。

フラッシュメッセージ取得
<?php
$flashMsg = $this->Session->flash();
?>
notifyBar
<script>
$(function() {
    <?php if(!empty($flashMsg)) : ?>
        var msg = '<?= $flashMsg ?>';
        var close = false;
        var cssClass = 'success';
        if(msg.match(/error/i)) {
            close = true;
        }
        $.notifyBar({
            html: msg,
            close: close,
            cssClass: cssClass
        });
    <?php endif ?>
});
</script>
2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2