エス技研

WordPress、CakePHP、PHP、baserCMSなどの Web系システムを中心に情報を提供します!


CakePHP4のフラッシュメッセージの表示場所、デザインを変更する方法を解説

   

CakePHP4の画面上部に表示されるフラッシュメッセージのデザインを改変する方法

 
下記の画像の箇所に表示されるエラーなどのメッセージを、「フラッシュ(Flash)メッセージ」と呼びます。
このフラッシュメッセージを表示させる場所や、デザインを変更する方法について解説します。
 
CakePHP4のフラッシュメッセージの表示場所、デザインを変更する方法を解説
 
 

CakePHPのフラッシュメッセージ表示の概要

 
フラッシュメッセージは、Controller内に記述した
$this->Flash->error(__('The ***** could not be saved. Please, try again.'));
の処理で実行されたものが表示されます。
 
 
表示する側の処理は、レイアウト「/templates/layout/default.php」に記述されている
$this->Flash->render();
の場所に表示されます。
 
さらに、メッセージが表示される HTML部分として読み込まれるテンプレートファイルが
「/templates/element/flash/******.php」
になります。
 
 
この記事は、CakePHP4向けの記事として書いています。
 
ですが、CakePHP3でも基本的な処理は同じです。
ただ、CakePHP3のテンプレートが置いてあるフォルダの場所、および、拡張子が下記のように異なっています。その点を読み替えてください。
「/src/Template/Element/Flash/******.ctp」
 
 
また、フラッシュに関する CookBookは下記になります。
CakePHP3 フラッシュ
リクエストとレスポンスオブジェクト
https://book.cakephp.org/3/ja/controllers/components/flash.html
 
CakePHP4 フラッシュ(FlashComponent)
リクエストとレスポンスオブジェクト
https://book.cakephp.org/4/ja/controllers/components/flash.html
 
CakePHP4 フラッシュ(FlashHelper)
リクエストとレスポンスオブジェクト
https://book.cakephp.org/4/ja/views/helpers/flash.html
 
 

フラッシュメッセージは Controller内で$this->Flash->***();で記述

 
フラッシュメッセージの処理は、下記を Controller内に記述するところから始まります。 

 
上記が基本形です。
「******」の部分は、表示させるテンプレートのファイル名と対になるエレメント名を指定します。
 
デフォルトでは下記などが登録されています。
 

 
 

フラッシュメッセージは「default.php」内の$this->Flash->render();で受け取る

 
Controllerで記述した「$this->Flash->***();」の処理は、デフォルトでは、レイアウトファイル
 「/templates/layout/default.php」
に記述されている
 「$this->Flash->render()
の場所に表示されます。
 
$this->Flash->render()」の記述は、レイアウトファイルだけではなく、それ以外のテンプレートファイル「/templates/Topics/add.php」などに記述することもできます。
 
$this->Flash->render()」の記述が、
 レイアウトファイル「default.php」
 テンプレートファイル「add.php」
のいずれにも記述がある場合、テンプレートファイルの方が優先されます。
 
また、一つのファイルの中に 2ヶ所に記述がある場合は最初に記述されている処理の方が優先されます。
 
 

詳細な HTML部分のテンプレートファイル「/templates/element/flash/*****.php」

 
Controller内に記述した
$this->Flash->******("メッセージ");
の処理に対応して最終的に表示されるテンプレートファイルは
 
「/templates/element/flash」フォルダ内にある「*****.php」になります。
 
$this->Flash->error("メッセージ");の場合は、対応するテンプレートファイルは「error.php」になります。
 
 
また、メソッド名、テンプレートファイルはそれぞれ対応するように記述されていれば、自由に名称を付けることができます。
 
例えば、
$this->Flash->errorPublics("メッセージ");の場合は、対応するテンプレートファイルは「success_publics.php」になります。
 
メソッドの記述はキャメルケース形式で、ファイル名はアンダースコアで区切る形式で記述します。
(メソッドもアンダースコアで区切る形式でも動作はしますが、規約上はキャメル形式で記述する必要があります。)
 
 

フラッシュメッセージのテンプレートファイルの CSSの変更

 
例えば、使用するテンプレートファイルが「error.php」の場合は、下記の記述の場所にメッセージが編集されます。
 

 
処理される CSSは Classで指定されている「message error」になります。
 
オリジナルの CSSを割り当てたいときは、テンプレートファイルを開いて、divタグの Classを指定することで対応が可能です。
 
 

CakePHP4の関連記事

CakePHPのFlashエラーは出るが入力項目ごとのメッセージが出ないエラーの原因
CakePHP4のフラッシュメッセージの表示場所、デザインを変更する方法を解説
CakePHPで同一テーブル内の値を比較する条件でレコードを取得する方法
国際化と地域化の翻訳機能「__()」を使って定数に変数を埋め込む方法
CakePHP4で現在処理しているコントローラー名、アクション名を取得する方法
CakePHP4のCakeDC/Usersの Usersへの接続、バリデーションのカスタマイズ方法解説
CakePHP4のCakeDC/Usersの Usersへの接続、バリデーションのカスタマイズ方法解説
CakePHP4のメッセージ日本語化の設定(国際化と地域化の機能の使い方の解説)
CakePHP4で公開側と管理側のデザインテンプレートを分ける方法・setLayout()
CakePHP4でcontrollerで実行したバリデーションエラーをmodelのにマージする方法
 
その他の「CakePHP4」に関する記事一覧
 
 

 - CakePHP 3.x 4.x

GoogleAdwords

GoogleAdwords

最後までお読みいただきましてありがとうございます。
この記事が参考になったと思いましたらソーシャルメディアで共有していただけると嬉しいです!

Message

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

下記の空欄を埋めてください。 * Time limit is exhausted. Please reload CAPTCHA.

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

※入力いただいたコメントは管理者の承認後に掲載されます。

  関連記事

CakePHP3でDocumentRootやwebroot、imgフォルダのURLやドメイン、パスを取得
CakePHP3でDocumentRootやwebroot、imgフォルダのURLやドメイン、パスを取得

URLやドメイン、フォルダへのパスの取得は、ビューではUrlHelperを使い、コントローラーではRouterクラスを使います。第2引数の指定でURLを取得することも可能。

CakePHP 2.3 Search Pluginで検索処理 その6ORDER、sortソートの機能

CakePHPの検索プラグイン Search Pluginの検索処理の中で order、ソートについての解説です。

CakePHP4のCakeDC/Usersの Usersへの接続、バリデーションのカスタマイズ方法解説
CakePHP4のCakeDC/Usersの Usersへの接続、バリデーションのカスタマイズ方法解説

CakeDC謹製Usersプラグインの紹介。CakePHP4で使う場合のUsersのカスタマイズとして入力項目のバリデーションの変更を、プラグインのファイルは触らずオーバーライドにより実装する方法を解説する。

CakePHP3のCakeDC/Users、Authでログインなしでもアクセスを許可する設定
CakePHP3のCakeDC/Users、Authでログインなしでもアクセスを許可する設定

CakePHP3の Authコンポーネントや CakeDC/Usersプラグインなどを利用したユーザ管理・認証システムにおいて、ログインしていなくても見ることができるページの設定方法を解説。

CakePHP4で公開側と管理側のデザインテンプレートを分ける方法・setLayout()
CakePHP4で公開側と管理側のデザインテンプレートを分ける方法・setLayout()

CakePHP4でデフォルトのレイアウトファイル「default.php」は管理側に使用し、これとは別のデザインを公開側のページに設定したい、を実装する方法を解説。

CakePHP3でWarning Error: SplFileInfo::openFile()エラーが発生した場合の対処方法
CakePHP3でWarning Error: SplFileInfo::openFile()エラーが発生した場合の対処方法

CakePHP3のキャッシュファイルのパーミッションエラー Error: SplFileInfo::openFile()が発生した場合の対応方法解説。app.phpにキャッシュファイルのパーミッション設定を行い、既存のファイルは削除。

CakePHP3のOGPはHTMLヘルパーの$this->Html->meta()を使って設定
CakePHP3のOGPはHTMLヘルパーの$this->Html->meta()を使って設定

CakePHP3でOGPを設定する方法を解説。metaタグを編集するHTMLヘルパーを利用してOGPのタグを編集する。また、エレメントとして分割することでメンテナンス性も向上させる。

cakephp3 カスタムバリデーションを簡易的に実装する方法
cakephp3 カスタムバリデーションを簡易的に実装する方法

CakePHP3の独自のバリデーションをテーブルクラス内に簡単に記述する方法を解説。他のテーブルクラスでは使えないが、記述する量は少なく実装できるため、他で使わない処理を書くのには便利。

CakePHP 2.3 主キー(ID)以外のキーで更新方法 updateAll

主キー(ID)以外のカラムをキーとして更新する方法、updateAllの使い方をサンプルを用いて解説します。

CakePHP3のバージョンを指定してインストールする詳細な手順を解説
CakePHP3、CakePHP4のバージョンを指定してインストールする詳細な手順を解説

CakePHP3のバージョンを指定してインストールする方法を詳細解説。CakePHP3のインストールはComposerを使うため設定もほぼ自動で完了。データベースの接続情報を記載すればアプリ開発のベースが整う。