我遇到了一個奇怪的問題,在Cake 2中我從來沒有在1.3中出錯。在CakePHP 2.0中處理錯誤。 Escaped viewVars
當一些異常升高(即NotFoundException)蛋糕的錯誤處理開始..默認情況下,實例化CakeErrorController和做所有的東西(見source)和..逃脫viewVars。但我有一些視圖變量設置在我的AppController的beforeRender,我不希望它們被轉義,因爲它們包含html,它們應該在佈局中呈現。這種行爲的原因是什麼?我怎麼能告訴蛋糕不要這樣做?
謝謝。
更新:
嘛。我摸索出了一些解決方案:
我創建控制器/ AppErrorController.php:
App::uses('CakeErrorController', 'Controller');
class AppErrorController extends CakeErrorController {
public function beforeRender() {
AppController::beforeRender();
}
}
和lib /錯誤/ AppExceptionRenderer.php:
App::uses('ExceptionRenderer', 'Error');
class AppExceptionRenderer extends ExceptionRenderer {
protected function _getController($exception) {
App::uses('AppErrorController', 'Controller');
if (!$request = Router::getRequest(false)) {
$request = new CakeRequest();
}
$response = new CakeResponse(array('charset' => Configure::read('App.encoding')));
try {
$controller = new AppErrorController($request, $response);
} catch (Exception $e) {
$controller = new Controller($request, $response);
$controller->viewPath = 'Errors';
}
return $controller;
}
}
而且在配置/ core.php I set:
Configure::write('Exception', array(
...,
'renderer' => 'AppExceptionRenderer',
...
));
看起來像預期的那樣工作,但是有沒有更優雅的解決方案?
謝謝。
對我來說似乎很奇怪,他們寫了一個beforeRender方法來轉義viewVars,我希望有人澄清這一點。 但無論如何,你看起來很乾淨。 – luchomolina 2011-12-21 21:28:31