3

エラー テンプレート (error400.ctp など) をレンダリングしようとしていますが、AppController で設定されたコンポーネントと変数に依存する既定のレイアウト (サイトのヘッダーとフッター) を使用しています。エラーページをレンダリングするときに AppController を使用するよう Cake に指示するにはどうすればよいですか?

私はすでに AppController を拡張する ErrorController を作成しようとしましたが、アクションが欠落しているために壊れます。

4

1 に答える 1

4

誰かが探しに来た場合に備えて、これが私の動作中の ErrorController です。

<?php
namespace App\Controller;

use App\Controller\AppController;
use Cake\Event\Event;

class ErrorController extends AppController
{

    public function beforeRender(Event $event)
    {
        parent::beforeRender($event);
        $this->viewBuilder()->templatePath('Error');
    }

}

コンポーネントの 1 つが AppController にロードされていることにバグがありました。ErrorController が AppController を拡張し、コントローラーで無効なアクションにアクセスしようとすると、AppController の 2 つのインスタンスが作成されます。私の場合、コンポーネントのバグが原因で、クラス エラーの重複宣言がスローされました。このエラーにより何らかのループが発生し、エラー ページがレンダリングされませんでした。

于 2015-10-15T18:40:13.803 に答える