cakephp2:如何设置蛋糕异常的布局

时间:2012-12-04 11:19:35

标签: cakephp layout plugins

我遇到了一个非常复杂的情况来渲染错误页面 1)蛋糕异常从插件中抛出NotFoundException; 2)我想从app而不是从这个插件渲染一个布局;

我试图设置$ this-> layout ='default';在插件控制器beforeFilter方法中,但仍然会渲染插件布局而不是应用程序布局。

我查看了CakeErrorController,但没有找到布局的设置位置。

任何想法如何管理?

1 个答案:

答案 0 :(得分:1)

我不确定这是否适合你,但这就是我所做的。我(在我的AppController中)将其设置在__construct()函数中:

    function __construct() {

        parent::__construct();

        if ($this->name == 'CakeError') { 
            $this->layout = 'default';
            $this->constructClasses();


            $this->beforeFilter();

            $this->beforeRender();
        }   
    }

同样,您的方法可能会有所不同,但这是我对它的实现。

此外,您可以使用定义的错误处理程序中的AppError.php文件进行设置。请注意,我的方法是Cake 1.3,所以我不确定App2文件在Cake2中有多么不同。

<?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');

    }   
}