diff --git a/core/control/Director.php b/core/control/Director.php index 1167e41ff..e58e45af5 100755 --- a/core/control/Director.php +++ b/core/control/Director.php @@ -280,7 +280,12 @@ class Director { $controllerObj = new $controller(); $controllerObj->setSession($session); - return $controllerObj->handleRequest($request); + $result = $controllerObj->handleRequest($request); + if(!is_object($result) || $result instanceof HTTPResponse) return $result; + + user_error("Bad result from url " . $request->getURL() . " handled by " . + get_class($controllerObj)." controller: ".get_class($result), E_USER_WARNING); + } } } diff --git a/core/control/ModelAsController.php b/core/control/ModelAsController.php index c7d6c4485..1aeb190cd 100755 --- a/core/control/ModelAsController.php +++ b/core/control/ModelAsController.php @@ -17,7 +17,8 @@ class ModelAsController extends Controller implements NestedController { * @return ContentController */ public static function controller_for(SiteTree $sitetree, $action = null) { - $controller = "{$sitetree->class}_Controller"; + if($sitetree->class == 'SiteTree') $controller = "ContentController"; + else $controller = "{$sitetree->class}_Controller"; if($action && class_exists($controller . '_' . ucfirst($action))) { $controller = $controller . '_' . ucfirst($action); @@ -54,6 +55,9 @@ class ModelAsController extends Controller implements NestedController { if($result instanceof RequestHandler) { $result = $result->handleRequest($this->request); + } else if(!($result instanceof HTTPResponse)) { + user_error("ModelAsController::getNestedController() returned bad object type '" . + get_class($result)."'", E_USER_WARNING); } } catch(SS_HTTPResponse_Exception $responseException) { $result = $responseException->getResponse(); diff --git a/templates/ContentController.ss b/templates/ContentController.ss new file mode 100644 index 000000000..e2d8749b2 --- /dev/null +++ b/templates/ContentController.ss @@ -0,0 +1,14 @@ + + + + + <% base_tag %> + $MetaTags + + +

$Title

+ $Content + +

Generated with the default ContentController.ss template

+ +