Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Refactoring the Controller::render method, moved the part that constr…

…ucts the view instance into Controller::_view() for easier overloading this part and better modularization
  • Loading branch information...
commit f9d27b6291c16f5a1fd44dde047dffc5b2062e43 1 parent 6ade91e
Florian Krämer burzum authored
Showing with 20 additions and 13 deletions.
  1. +20 −13 lib/Cake/Controller/Controller.php
33 lib/Cake/Controller/Controller.php
View
@@ -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) {
@@ -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.
@@ -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);
+ }
+
}
Please sign in to comment.
Something went wrong with that request. Please try again.