Skip to content

Commit

Permalink
Refactoring the Controller::render method, moved the part that constr…
Browse files Browse the repository at this point in the history
…ucts the view instance into Controller::_view() for easier overloading this part and better modularization
  • Loading branch information
Florian Krämer committed Jan 24, 2013
1 parent 6ade91e commit f9d27b6
Showing 1 changed file with 20 additions and 13 deletions.
33 changes: 20 additions & 13 deletions lib/Cake/Controller/Controller.php
Expand Up @@ -930,14 +930,7 @@ public function render($view = null, $layout = null) {
}
}

$viewClass = $this->viewClass;
if ($this->viewClass != 'View') {
list($plugin, $viewClass) = pluginSplit($viewClass, true);
$viewClass = $viewClass . 'View';
App::uses($viewClass, $plugin . 'View');
}

$View = new $viewClass($this);
$this->View = $this->_view();

$models = ClassRegistry::keys();
foreach ($models as $currentModel) {
Expand All @@ -946,15 +939,13 @@ public function render($view = null, $layout = null) {
$className = get_class($currentObject);
list($plugin) = pluginSplit(App::location($className));
$this->request->params['models'][$currentObject->alias] = compact('plugin', 'className');
$View->validationErrors[$currentObject->alias] =& $currentObject->validationErrors;
$this->View->validationErrors[$currentObject->alias] =& $currentObject->validationErrors;
}
}

$this->autoRender = false;
$this->View = $View;
$this->response->body($View->render($view, $layout));
return $this->response;
}
$this->response->body($this->View->render($view, $layout));
return $this->response; }

/**
* Returns the referring URL for this request.
Expand Down Expand Up @@ -1224,4 +1215,20 @@ protected function _scaffoldError($method) {
return $this->scaffoldError($method);
}

/**
* Constructs the view class based on the controllers properties
*
* @return View
*/
protected function _view() {
$viewClass = $this->viewClass;
if ($this->viewClass != 'View') {
list($plugin, $viewClass) = pluginSplit($viewClass, true);
$viewClass = $viewClass . 'View';
App::uses($viewClass, $plugin . 'View');
}

return new $viewClass($this);
}

}

0 comments on commit f9d27b6

Please sign in to comment.