2015-10-13 61 views
3

我想呈現錯誤模板(例如error400.ctp),但默認佈局(網站頁眉和頁腳)依賴於組件和變量在AppController中設置。如何讓Cake在渲染錯誤頁面時使用AppController?是否有可能在錯誤頁面上使用AppController? (CakePHP 3.1)

我已經嘗試過製作一個擴展AppController的ErrorController,但是它因缺少的操作而中斷。

+0

我知道,那不是我的問題。即使關閉調試,錯誤視圖也不會使用AppController。 –

+2

然後,檢查[this](http://stackoverflow.com/questions/30315153/cakephp-3-var-not-transmitted-to-view-when-exception-thrown)。 – Holt

+0

'它爲缺少的動作打斷了。' - 這可能意味着拋出異常_whilst_嘗試呈現錯誤頁面。異常渲染器[簡單地使用你的錯誤控制器](https://github.com/cakephp/cakephp/blob/master/src/Error/ExceptionRenderer.php#L111-L114) - 如果它存在,[回落使用控制器對象](https://github.com/cakephp/cakephp/blob/master/src/Error/ExceptionRenderer.php#L129-L131)如果失敗。一些調試可能會幫助你解決你自己的問題。 – AD7six

回答

3

下面是任何人的情況下我的工作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實例,在我的情況下,由於組件中存在一個錯誤而導致類錯誤的重複聲明被拋出。此錯誤導致某種循環導致錯誤頁面無法呈現。

相關問題