我遇到了一个非常复杂的情况来呈现错误页面 1)蛋糕异常 NotFoundException 是从插件中抛出的;2)我想从应用程序而不是从这个插件呈现布局;
我试图设置 $this->layout='default'; 在插件控制器 beforeFilter 方法中,但仍然呈现插件布局而不是应用程序布局。
我查看了 CakeErrorController 但没有找到布局的设置位置。
知道如何管理吗?
我不确定这是否对你有用,但这就是我所做的。我(在我的 AppController 中)在__construct()
函数中设置它:
function __construct() {
parent::__construct();
if ($this->name == 'CakeError') {
$this->layout = 'default';
$this->constructClasses();
$this->beforeFilter();
$this->beforeRender();
}
}
同样,您的方法可能会有所不同,但这是我的实现。
此外,您可以在定义的错误处理程序中使用 AppError.php 文件对其进行设置。请注意,我的方法是针对 Cake 1.3,所以我不确定 Cake2 中的 AppError 文件有多么不同。
<?php
class AppError extends ErrorHandler {
function error403($params) {
extract($params, EXTR_OVERWRITE);
if (!isset($url)) {
$url = $this->controller->here;
}
$this->controller->helpers = array_merge( $this->controller->helpers, array( 'Asset.Asset', 'Auth' ) );
$url = Router::normalize($url);
$this->controller->set(array(
'code' => '403',
'name' => __('Permission Denied', true),
'message' => $message,
'base' => $this->controller->base
));
$this->_outputMessage('error403');
}
}