From 39792debb8888237639d2b316181e685658894d8 Mon Sep 17 00:00:00 2001 From: Sam Minnee Date: Thu, 27 Sep 2012 12:30:44 +1200 Subject: [PATCH] FIX Use RequestHandler::httpError() for all HTTP errors. https://github.com/silverstripe/sapphire/pull/827 adds some extension points for catching HTTP errors such as 404. This change fixes some issues where httpError() isn't used all the time. Note that the aforementioned pull request will be necessary to ensure that it works properly. --- code/controllers/ContentController.php | 9 ++++----- code/controllers/ModelAsController.php | 7 ++----- 2 files changed, 6 insertions(+), 10 deletions(-) diff --git a/code/controllers/ContentController.php b/code/controllers/ContentController.php index 5f67e6b7..4593d302 100644 --- a/code/controllers/ContentController.php +++ b/code/controllers/ContentController.php @@ -205,11 +205,10 @@ class ContentController extends Controller { * @uses ErrorPage::response_for() */ public function httpError($code, $message = null) { - if($this->request->isMedia() || !$response = ErrorPage::response_for($code)) { - parent::httpError($code, $message); - } else { - throw new SS_HTTPResponse_Exception($response); - } + // Don't use the HTML response for media requests + $response = $this->request->isMedia() ? null : ErrorPage::response_for($code); + // Failover to $message if the HTML response is unavailable / inappropriate + parent::httpError($code, $response ? $response : $message); } /** diff --git a/code/controllers/ModelAsController.php b/code/controllers/ModelAsController.php index e6d0178b..5aeefc1f 100644 --- a/code/controllers/ModelAsController.php +++ b/code/controllers/ModelAsController.php @@ -126,11 +126,8 @@ class ModelAsController extends Controller implements NestedController { return $this->response; } - if($response = ErrorPage::response_for(404)) { - return $response; - } else { - $this->httpError(404, 'The requested page could not be found.'); - } + $response = ErrorPage::response_for(404); + $this->httpError(404, $response ? $response : 'The requested page could not be found.'); } // Enforce current locale setting to the loaded SiteTree object