/** * Pass unrecognized method calls on to the original controller * * @param string $method * @param string $args * @return mixed * * @throws Exception Any error other than a 'no method' error. */ public function __call($method, $args) { try { return parent::__call($method, $args); } catch (Exception $e) { // Hack... detect exception type. We really should use exception subclasses. // if the exception isn't a 'no method' error, rethrow it if ($e->getCode() !== 2175) { throw $e; } $original = $this->copyContentFrom(); $originalClass = get_class($original); if ($originalClass == 'SiteTree') { $name = 'ContentController'; } else { $name = $originalClass . "_Controller"; } $controller = new $name($this->dataRecord->copyContentFrom()); return call_user_func_array(array($controller, $method), $args); } }
/** * Pass unrecognized method calls on to the original controller * * @param string $method * @param string $args * @return mixed * * @throws Exception Any error other than a 'no method' error. */ public function __call($method, $args) { try { return parent::__call($method, $args); } catch (Exception $e) { // Hack... detect exception type. We really should use exception subclasses. // if the exception isn't a 'no method' error, rethrow it if ($e->getCode() !== 2175) { throw $e; } $original = $this->copyContentFrom(); $controller = ModelAsController::controller_for($original); // Ensure request/response data is available on virtual controller $controller->setRequest($this->getRequest()); $controller->response = $this->response; // @todo - replace with getter/setter in 3.3 return call_user_func_array(array($controller, $method), $args); } }