2014-06-16 164 views
0

我想在我的控制器中拋出403(禁止的錯誤)。拋出異常時,我想顯示相關的視圖。我假設如果錯誤是內置的異常之一,這將是非常簡單的。我拋出該異常這樣的:將403異常視圖添加到CakePHP應用程序

throw new ForbiddenException("You do not have permission to view this page."); 

我還創建了一個名爲在app /視圖/錯誤的文件夾「error403.ctp」視圖(它已經包含了400和500)。問題是,當引發錯誤時,它會顯示error400.ctp視圖。我是否必須爲內置錯誤創建自定義異常?我究竟做錯了什麼。

感謝 傑森

回答

0

我沒有您使用的確切的蛋糕版本,所以我將使用指向文檔版本的鏈接2.3,但它應該適用於任何版本2.x.

如果你看一下default ExceptionRenderer construct,從你的描述

得到這個創建執行渲染上的錯誤響應控制器。如果錯誤是一個CakeException,它將被轉換爲400或500代碼錯誤,具體取決於用於構造錯誤的代碼。

而且不夠清晰,從the code of that function,所有的錯誤被映射到:

$method = 'error500'; 
if ($code >= 400 && $code < 500) { 
    $method = 'error400'; 
} 

你必須創建一個自定義異常渲染器,如果你想使用其他的看法。另外請記住,當使用調試< 1時,您將只能得到500個錯誤頁面

捕獲並處理所有未處理的異常。當調試> 1時顯示有用的框架錯誤。當調試時,CakeException將呈現404或500錯誤。如果拋出一個未捕獲的異常,並且它是一個ExceptionHandler不知道的類型,它將被視爲500錯誤。

相關問題