【CakePHP】setFlashのオプションについて
バージョン:CakePHP 2.x
setFlashのオプションは下記になります。
オプションを指定することによって複数のメッセージを出力したり、見た目を変えることができます。
SessionComponent::setFlash(string $message, string $element = 'default', array $params = array(), string $key = 'flash')
パラメーター:$key
成功メッセージと失敗メッセージを分けるなど、複数のメッセージを出力したい場合に使用します。
$this->Session->setFlash('失敗しました!', 'default', array(), 'bad'); $this->Session->setFlash('成功しました!', 'default', array(), 'good');
echo $this->Session->flash('good’);
echo $this->Session->flash('bad’);
パラメーター:$element
エレメントを使用して、出力するメッセージを分けたい場合に使用します。
$this->Session->setFlash('成功しました', 'flash_custom');
app/View/Elements/flash_custom.ctp を作成して、下記のように出力します。
<div class="myCustomFlash"> <?php echo h($message); ?> </div>
※フラッシュメッセージはエスケープ処理を行わないようなので、エスケープが必要な場合はエスケープ処理をします。
引用:公式サイト(セッション)
CakePHPは、デフォルトではフラッシュメッセージをHTMLエスケープしません。 もしリクエストやユーザーデータをフラッシュメッセージに含める場合は、 メッセージを整形するときにそれらを h でエスケープするべきです。
パラメーター:$params
追加の変数を渡したい場合に使用します。
1.divにクラスを適用する
$this->Session->setFlash('メッセージです', 'default', array('class' => 'example_class'));
echo $this->Session->flash();
とすると、divのclassに適用されます。
<div id="flashMessage" class="example_class">メッセージです</div>
2.プラグインを使う
プラグインのエレメントを使用する場合は下記のようにします。
$this->Session->setFlash('メッセージです', 'エレメント名', array('plugin' => 'プラグイン名'));
参考:公式サイト(セッション)