2014-06-16 163 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错误。

相关问题