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>