cakeErrorのレイアウトをすべて変更する

cakeErrorにはerror404だけでなくmissingViewなどたくさんアクションがあります。これらの使うレイアウトを一気に変更したい場合に有効な方法です。

app_error.php

<?php

App::import('Core', 'Error');

class AppError extends ErrorHandler {
	public function dispatchMethod($method, $messages) {
		$this->controller->layout = 'error';
		parent::dispatchMethod($method, $messages);
	}
}

ついでに、なぜ用意されていないのか理解に苦しむ error403も追加。

<?php

	public function error403($params) {
		extract($params, EXTR_OVERWRITE);
		
		if (!isset($url)) {
			$url = $this->controller->here;
		}
		
		$url = Router::normalize($url);
		$this->controller->header("HTTP/1.0 403 Forbidden");
		$this->controller->set(array(
			'code' => '403',
			'name' => __('Forbidden', true),
			'message' => h($url),
			'base' => $this->controller->base
		));
		$this->_outputMessage('error403');
	}

viewはerror404.ctpをコピーして使ってね。