cakephp不同的布局对同一错误有不同的错误消息

时间:2013-06-07 21:15:16

标签: cakephp layout error-handling themes

在默认布局中,您会收到缺少控制器的错误消息(这是正确的,因为控制器不存在)

但是当我切换到不同的布局时,我得到:an internal error has occurred。是什么导致这种情况,以及如何确保在我的自定义布局中获取默认错误消息?

我使用cakephp 2.3.5并在AppController.php的BeforeRenderer中使用此设置进行切换:

$this->layout = 'admin';

我唯一改变的是取消注释/评论是这一行。我在管理主题中使用默认布局的副本测试了问题,但错误信息仍然不同。

自定义布局的错误消息:

  

找不到控制器类GroupsController。错误:An   发生内部错误。

     

Stack Trace APP / webroot / index.php第109行→   Dispatcher-> dispatch(CakeRequest,CakeResponse)

默认布局的错误消息:

  

缺少控制器错误:找不到GroupsController。

     

错误:在文件中创建下面的GroupsController类:   应用程序/控制器/ GroupsController.php

?php class GroupsController extends AppController {
}
     

注意:如果要自定义此错误消息,请创建   应用/视图/错误/ missing_controller.ctp

     

Stack Trace APP / webroot / index.php第109行→   Dispatcher-> dispatch(CakeRequest,CakeResponse)

1 个答案:

答案 0 :(得分:0)

CakePHP Docs中,你可以创建一个自定义的AppError来处理任何类型的错误,找不到404,找不到控制器/组件/助手,安全错误......

我在AppController中做了一个检查视图名称是否错误的方法。

您可以使用:

if ( $this->name == 'CakeError' ) {
    $this->layout = 'cake';
    return;
}

如果您感到好奇,请参阅lib \ Cake \ View \ Errors以获取可用的错误视图。