【CakePHP】setFlashのオプションについて

2019年7月29日

バージョン: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' => 'プラグイン名'));

参考:公式サイト(セッション)

スポンサーリンク