CakePHP4で公開側と管理側のデザインテンプレートを分ける方法・setLayout()
2022/07/16
公開側と管理側でレイアウトファイルを切り替える方法を解説
この記事では、
公開しない 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()」には何も記述されていませんので、下記の内容をまるっと追加する感じになります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
public function initialize(): void { parent::initialize(); // レイアウトとして読み込むファイルを指定する $this->setLayout('default_public'); // デフォルトのデザインテンプレートを使う処理を指定(管理側の画面を指定) $controllerArray = ["Topics","Users"]; $actionArray = ["index","add","edit","view"] if (in_array($this->request->getParam("controller"), $controllerArray)) { if ( in_array($this->request->getParam("action"), $actionArray) ) { $this->setLayout('default'); } } } |
まず初めに
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」となっている点が異なるくらいかと思います。
GoogleAdwords
GoogleAdwords
この記事が参考になったと思いましたらソーシャルメディアで共有していただけると嬉しいです!
関連記事
-
-
CakePHP3で画像・ファイルのアップロード処理を自作・解説付き・その2
ファイルのアップロード機能の自作サンプルコードとその解説のその2。アップロード機能に関連するファイルの更新や削除の処理や画像、フォルダのパスの指定方法などを含めて解説。
-
-
CakePHP3でcomposerを利用してライブラリ・プラグインをインストールする方法
CakePHP3でcomposerを使ってパッケージ(ライブラリ、プラグイン)をインストールする方法の解説。PHPを使うのはCakePHP3が初めてというような方への使い方から解説。
-
-
CakePHP3で静的ページの作成は webrootか pagesを使う。トップページを参考に解説
CakePHP3で静的なページを設置する場合の方法(webrootとpagesとを活用する方法)を解説。pagesの解説はデフォルトのトップページがどう表示されているかを参考に解説。ルーティングの機能も。
-
-
CakePHP4で「app_local.php」「.env」を利用して環境ごとの定数を振り分ける方法
CakePHP4で.env、app_local.phpに定数を定義してそれを呼び出す方法の解説。Gitでは管理せず本番環境と開発環境とで異なる定数を定義するためそれを利用する方法。
-
-
CakePHP3のCakeDC/Usersでログインユーザの所有レコードのみ更新、削除する権限管理の設定方法
CakePHP3のユーザ管理、ログイン認証プラグイン「CakeDC/Users」の権限管理を行う方法やアクセスできるコントローラー、アクションを設定、所有権を持つレコードのみ更新できる設定方法を解説。
-
-
CakePHP 2.3でファイルをアップロード・その2 ファイル名を乱数で設定
CakePHPのアップロードするファイル名を乱数で変更しセキュリティを高める方法を解説。
-
-
CakePHP3のアソシエーションでJOINのタイプのLEFT、INNERを切り替えながら使う方法
CakePHP3でテーブルのアソシエーションしたデータの取得をコントローラー側でINNERかLEFTを指定する方法を解説。TableファイルにINNERで指定していてもController側で変更ができる。
-
-
URL短縮サービス「TTTオンライン(https://ttt.onl)」公開
URL短縮サービス「TTTオンライン(https://ttt.onl)」を公開。メールやSNSでは使いにくい長いURLを短いURLに変換するサービス。QRコードも。Google URL Shortenerが2019年3月にサービス終了。
-
-
CakePHP 2.x系 Viewでのコメントの記述方法など
CakePHPにおいて View、ctpファイルでコメントを記述する方法を解説。
-
-
CakePHP 2.3 ログイン、操作履歴、アクセスログ出力
CakePHPでログインや操作履歴などのアクセスログ出力処理を作成します。