0

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

但是当我切换到不同的布局时,我会得到:an internal error has occurred. 是什么原因造成的,如何确保在自定义布局中获得默认错误消息?

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

$this->layout = 'admin';

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

自定义布局的错误消息:

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

堆栈跟踪 APP/webroot/index.php 第 109 行 → Dispatcher->dispatch(CakeRequest, CakeResponse)

默认布局的错误消息:

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

错误:在以下文件中创建类 GroupsController:app/Controller/GroupsController.php

?php class GroupsController extends AppController {
}

注意:如果要自定义此错误消息,请创建 app/View/Errors/missing_controller.ctp

堆栈跟踪 APP/webroot/index.php 第 109 行 → Dispatcher->dispatch(CakeRequest, CakeResponse)

4

1 回答 1

0

正如在CakePHP Docs中一样,你可以创建一个自定义的 AppError 来处理任何类型的错误,404 not found,controller/component/helper not found,Security Errors...

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

您可以使用:

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

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

于 2013-06-08T01:28:55.320 回答