CakePHP4でレイアウト、つまり大枠の部分のデザインテンプレートは、デフォルトでは
template/layout/default.php が使われます。
これは、レイアウトファイルといわれていますが、デフォルトのレイアウトファイルを変更する場合はコントローラーで以下のようにします。
$this->viewBuilder()->setLayout('hoge');
これで以下のファイルがレイアウトファイルとして使われます。
template/layout/hoge.php
ですが、500番とか400番とかのエラー画面でレイアウト指定をしたい場合、なぜかsetlayout()メソッドを使ってもレイアウト変更ができません。
どうも、エラー用のテンプレートだと仕組みがちょっと違うらしい。
エラー画面は
template/Error/error400.php などがそれにあたりますが。ここには
$this->layout = 'default';
という記載があり、ここでレイアウトファイルを切り替えているようです。
例えば、Adminルーティングで表画面と管理画面でエラー画面のレイアウトを変更したい場合は
$this->layout = 'default'; $prefix = $this->request->getParam('prefix'); if($prefix=='Admin'){ $this->layout = 'admin'; }
こんな感じにしてあげればいいみたいです。