環境

  • cakephp3.6
  • php7.2
  • nginx

質問

CakePHP3.6を利用しております。
もともとLaravelを使っていたので、テンプレートエンジンが欲しく、
以下のTwigプラグインを使っています。
https://github.com/WyriHaximus/TwigView

しかし、いざエラーページを作成しようと、

  • Template/Layout/default.twig
  • Template/Error/error400.twig
  • Template/Error/error500.twig

を作ったのですが、 throw new NotFoundException(); しても、nginxのエラーページが表示されてしまいます。
これが何故かわかりません。

ファイルの中身としては、

Template/Layout/default.twig

OCTYPE html>
<html>
<head>
    {{ Html.charset() | raw }}
    <title>
        エラーページ
    </title>
</head>
<body>
<div id="container">
    <div id="header">
        <h1>{{ __('Error') }}</h1>
    </div>
    <div id="content">
        {{ _view.fetch('content')|raw }}
    </div>
    <div id="footer">
    </div>
</div>
</body>
</html>

Template/Error/error400.twig

Not Found

Template/Error/error500.twig

Server Error

という具合です。


あまりにもできなかったため、以下のサイト様を参考にカスタムエクセプション処理を作成しました。
http://moblog.absgexp.net/cakeerr/#i-5

しかし、 Controller/AppErrorController.phpbeforeRender メソッドを徹の確認できるのですが、
結局nginxのエラーページが表示されます。

また、何故かわかりませんが、 deprecationWarning 関数を呼び出し、画面にエラーメッセージを表示すると、うまく表示されます。
が、それ本番では流石に使えないので困っております。

public function beforeRender(Event $event)
    {
        //「src/Template/Layout/」の下にあるLayoutファイルを参照している
        $this->viewBuilder()->setLayout('error');

        //Templateファイルのあるパスを指定(src/Template/Error/)
        $this->viewBuilder()->setTemplatePath('Error');
        //$this->viewBuilder()->templatePath('Error');
    }

どなたかご存知の方がいらっしゃいましたら、ご教示いただけますと幸いです。
よろしくお願いいたします。