我正在尝试渲染错误模板(例如error400.ctp)但是使用默认布局(站点页眉和页脚),它依赖于AppController中设置的组件和变量。在渲染错误页面时如何告诉Cake使用AppController?
我已经尝试过制作一个扩展AppController的ErrorController,但它会因缺少的操作而中断。
答案 0 :(得分: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');
}
}
我的一个组件中有一个错误正在AppController中加载。当ErrorController扩展AppController并尝试访问控制器中的无效操作时,它会创建两个AppController实例,在我的情况下,由于组件中的错误而引发了类错误的重复声明。此错误导致某种循环导致错误页面无法呈现。