【CakePHP3】フラッシュメッセージを削除する方法

CakePHP3
スポンサーリンク

こんにちは、とらんぽです。
いくつもフラッシュ(Flash)メッセージをセットしてしまって、ページを描画するときには何度も何度もフラッシュが出力されてしまうことがあります。

そんなとき、事前にコントローラーで出力しないフラッシュを削除できないかと調べたので、共有します。

削除方法

CakePHP3でフラッシュはセッションに登録されています。
よって、セッションを操作して該当する階層にあるフラッシュメッセージを指定して削除すれば良いのです。

そして、基本的にフラッシュメッセージはセッションの「Flash」というキーで保存されています。

// Controllerで実施
// セッションを取得
$session = $this->request->getSession();

// フラッシュメッセージを削除
$session->delete(“Flash”);

応用

フラッシュメッセージを登録する際に、以下のようにkeyを指定して登録していれば、そのkeyのフラッシュメッセージのみを削除することができます。

// フラッシュをset
$this->Flash->success(“正常に登録できました。”,[‘key’ => ’submitSuccess’]);

Keyが「submitSuccess」のフラッシュメッセージのみ削除

// Controllerで実施
// セッションを取得
$session = $this->request->getSession();

// フラッシュメッセージを削除
$session->delete(“Flash.submitSuccess”);

以上です。

タイトルとURLをコピーしました