2012-10-23 47 views
0

是否可以爲cakephp1.3中的不同錯誤設置不同的佈局?cakephp1.3中不同錯誤的不同佈局

這是我AppError

function _outputMessage($template) { 
    $this->controller->beforeFilter(); 
    $this->controller->render($template); 
    $this->controller->afterFilter(); 
    echo $this->controller->output; 
} 

function error404($params) { 
    extract($params, EXTR_OVERWRITE); 
    header("HTTP/1.0 404 Not Found"); 
    $this->error(array('code' => '404', 
        'name' => 'Not found', 
        'message' => sprintf("page not found %s", $url, $message), 
        'base' => $base)); 

    exit(); 
} 

function item404($params) { 
    extract($params, EXTR_OVERWRITE); 
    header("HTTP/1.0 404 Not Found"); 

    $this->error(array('code' => '404', 
        'name' => 'Not found', 
        'message' => sprintf("Item not found %s", $url, $message), 
        'base' => $base)); 

    exit(); 
} 

我想有佈局 「錯誤」 佈局 「itemerror」,分別。 我曾嘗試在函數中設置佈局,但它不起作用。

任何幫助讚賞,

回答

0

當然,只需更改控制器的佈局。

$this->controller->layout = 'error_layout'; 

這假定您繼續使用默認的_outputMessage()方法。

function _outputMessage($template) { 
    // can be set in the error method 
    $this->controller->layout = 'error_layout'; 
    parent::_outputMessage($template); 
} 
+0

我想爲ErrorA和LayoutB的ErrorB的LayoutA。設置控制器佈局不允許區分 – glasspill

+0

如果您將其設置爲錯誤而不是'_outputMessage',則應如註釋中所述。畢竟,它使用'$ this-> controller'來進行渲染。你是否刪除了'_outputMessage',因此它使用默認值?你不需要覆蓋它。 – jeremyharris

+0

設置$ this-> controller-> layout ='error_layout';在使用默認佈局的錯誤方法原因中。 – glasspill