在默认布局中,您会收到缺少控制器的错误消息(这是正确的,因为控制器不存在)
但是当我切换到不同的布局时,我得到: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)
答案 0 :(得分:0)
在CakePHP Docs中,你可以创建一个自定义的AppError来处理任何类型的错误,找不到404,找不到控制器/组件/助手,安全错误......
我在AppController中做了一个检查视图名称是否错误的方法。
您可以使用:
if ( $this->name == 'CakeError' ) {
$this->layout = 'cake';
return;
}
如果您感到好奇,请参阅lib \ Cake \ View \ Errors以获取可用的错误视图。