エス技研

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


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

      2023/12/28

公開側と管理側でレイアウトファイルを切り替える方法を解説

 
この記事では、
 公開しない CMSの管理側の画面のテンプレートは「default.php」
 一般公開するページのテンプレートファイルは「default_public.php」
といった感じで、公開画面側と管理画面側のデザインテンプレートを分ける方法を解説します。
 
 

CakePHP4のデフォルトのレイアウトファイルは「default.php」

 
CakePHP4のデザインテンプレートを管理しているレイアウトファイル(デザインテンプレートファイル)は下記になります。
 /templates/layout/default.php
 
この「default.php」ファイルには「html」「head」「body」タグが記述されています。
また、「$this->fetch('content')」の部分には、各 controller、actionに該当する HTMLが編集されて、ページ全体が表示される、という処理になっています。
 
 
ページのデザインを変更する場合は、「default.php」をページのレイアウトファイルとして変更を行い、あわせて、各 actionごとのテンプレートファイルを変更することになります。
 
 
ですが、「default.php」を変更すると、公開側の画面も、管理側の画面もデザインも変わってしまいます。
 
そのため、この記事では、公開側の画面と公開側の画面のデザインプレートをそれぞれ設定する方法を解説します。
 
 

「/src/View/AppView.php」に「setLayout()」で指定

 
編集対象のファイルは以下になります。
 /src/View/AppView.php
 
デフォルトの「initialize()」には何も記述されていませんので、下記の内容をまるっと追加する感じになります。
 

 
 
まず初めに
6行目で公開側のレイアウトファイルを指定します。
 
指定した「default_public」は下記のファイルになります。
 /templates/layout/default_public.php
 
このままでは、公開側も管理側も「default_public.php」に切り替わってしまいますので、13行目の処理で「default」を指定しなおします。
 
その際、「default.php」を使用する条件として、11行目で controllerを指定、12行目で actionを指定しています。
 
 
上記のサンプルでは、controllerと actionを条件としてレイアウトファイルを切り替える処理にしていますが、if文の分岐に「ログインしている/していない」を条件に加えたり、「ログインしているユーザの権限」を条件に加えたりすることで、多様な条件でデザインを切り替えることも可能になります。
 
いろいろと試してみてください。
 
 

「setLayout()」の使い方は CakePHP3でも同様

 
ちなみに、この記事は CakePHP4を対象とした記事として書いていますが、CakePHP3でも同様の記述で、同様の処理を行うことができます。
 
 /src/View/AppView.php
上記ファイルがある場所は CakePHP4でも CakePHP3でも同じです。
 
 /templates/layout/default.php
上記に関しては、ファイルが設置されているフォルダは同じ場所ですが、CakePHP3では「default.php」の拡張子が「.ctp」となっている点が異なるくらいかと思います。
 
 

CakePHP4の関連記事

CakePHP4でロギングスコープやログレベルを使用してログを出し分ける方法を解説
CakePHP2、CakePHP3、CakePHP4、CakePHP5のバージョンを調べる 2つの方法
Windows上のXAMPP環境のCakePHPのコマンド実行時に環境変数を指定する方法
CakePHP4で複数の引数(パラメータ)を付与してコマンドを実行する方法
CakePHP4 のコマンドプログラムからコンポーネントを読み込む方法解説
CakePHP4 でコマンドプログラム(シェルプログラム)を作成する方法解説
Windows環境の XAMPPを利用して CakePHPの開発する際の注意点
CakePHP4の規約外のカラムをキーにアソシエーション(テーブル連結)する方法
CakePHPで Auto Incrementを外すと Duplicate entry '0' for keyのエラーが出るかも
CakePHPのFlashエラーは出るが入力項目ごとのメッセージが出ないエラーの原因
 
その他の「CakePHP4」に関する記事一覧
 
 

 - CakePHP 3.x 4.x

GoogleAdwords

GoogleAdwords

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

Message

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

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

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

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

  関連記事

CakePHP 2.3 Model、Controllerの見たい変数の中身をログ出力

CakePHPの Modelや Controllerの変数の中身をログとして出力して見る方法を提供します。

CakePHP3のdatetime型カラムの日時の扱い。秒まで正しく表示する方法
CakePHP3、CakePHP4のdatetime型カラムの日時の扱い。秒まで表示する方法

CakePHP3の日時カラムで秒まで扱う場合はdate()、strtotime()関数ではうまくいかない。CakePHP3であらかじめ用意された「i18nFormat()」を使用する。

CakePHP3のキャッシュをクリアする方法「bin/cake cache clear_all」を使う
CakePHP3、CakePHP4のキャッシュをクリアする方法「bin/cake cache clear_all」を使う

CakePHP3、CakePHP4では処理を高速化する手法の一つとしてキャッシュを利用している。しかし、その情報は元の情報を更新しても反映されない場合がある。そんなときはキャッシュを削除する必要がある。

CakePHP3チュートリアルで日付と時刻のDateTimeでエラーが出たときの対処方法
CakePHP3チュートリアルで日付と時刻のDateTimeでエラーが出たときの対処方法

CakePHP3のブックマークチュートリアルには記載ミスもあり、そのまま動かない個所もある。CakePHP3では namespaceを使うようになったので、classを呼び出すときに¥を追加する必要が!

CakePHP 2.3 コマンドラインからPHPのシェル実行の方法解説

CakePHP 2.3でコマンドラインから CakePHPで記述した処理を実行する方法を解説します。

CakePHP4のCakeDC/Usersのログイン時のリダイレクトとユーザ権限管理の設定解説
CakePHP4のCakeDC/Usersのログイン時のリダイレクトとユーザ権限管理の設定解説

CakeDC謹製UsersプラグインのCakePHP4版の紹介。ログイン認証後にリダイレクトする先の設定方法についての解説と実運用するために必要なコツを解説。便利な仕組みも仕様の理解があって初めてうまく使いこなせる。

CakePHP3でテーブルにカラムを追加したときに変更するポイントのまとめ
CakePHP3でテーブルにカラム(項目)を追加したときに変更するポイントのまとめ

CakePHP3でシステム開発をする際、途中でカラムを追加した場合に何を変更すればいいかを確認。カラムを追加する前後で Bakeした結果を比較し、変更になった点をリストアップした。

CakePHP 2.3 Search Pluginで検索処理 その4前方一致検索、後方一致検索、不等号による検索、between句による範囲検索

CakePHPの検索プラグイン Search Pluginの検索処理の中で前方一致検索、後方一致検索、不等号による検索、between句による範囲検索の解説です。

CakePHP4のCakeDC/Usersの画面、メール本文テンプレートのカスタマイズ方法解説
CakePHP4のCakeDC/Usersの画面、メール本文テンプレートのカスタマイズ方法解説

CakeDC謹製Usersプラグインの紹介。ユーザ新規登録の流れを紹介しつつ、テンプレートファイル、設定情報ファイルの場所とそれらをカスタマイズする方法を説明します。

CakePHP3のInsert On Duplicate Key Update(upsert)構文を解説・バルク処理も
CakePHP3のInsert On Duplicate Key Update(upsert)構文を解説・バルク処理も

CakePHP3で Insert … On Duplicate Key Update構文(upsert)を実行する方法を解説。バルク処理の方法も用意されているため大量処理の場合も対応可能。