Browse Source

Get tests passing with ViewBuilder.

This mostly deprecates getView() and replaces it with viewBuilder().
This also deprecates a few properties on Cell. More viewOptions can be
removed as the builder replaces these as well.
Mark Story 10 years ago
parent
commit
7348802bea

+ 1 - 1
src/Controller/Controller.php

@@ -198,7 +198,7 @@ class Controller implements EventListenerInterface, EventDispatcherInterface
      * @see \Cake\View\View
      */
     protected $_validViewOptions = [
-        'viewVars', 'helpers', 'name', 'plugin', 'passedArgs'
+        'passedArgs'
     ];
 
     /**

+ 1 - 1
src/Controller/ErrorController.php

@@ -56,6 +56,6 @@ class ErrorController extends Controller
      */
     public function beforeRender(Event $event)
     {
-        $this->getView()->viewPath('Error');
+        $this->viewBuilder()->viewPath('Error');
     }
 }

+ 6 - 3
src/Error/ExceptionRenderer.php

@@ -329,10 +329,13 @@ class ExceptionRenderer
      */
     protected function _outputMessageSafe($template)
     {
-        $this->controller->helpers = ['Form', 'Html'];
+        $helpers = ['Form', 'Html'];
+        $this->controller->helpers = $helpers;
+        $builder = $this->controller->viewBuilder();
+        $builder->helpers($helpers, false)
+            ->layoutPath('')
+            ->viewPath('Error');
         $view = $this->controller->createView();
-        $view->layoutPath('');
-        $view->viewPath('Error');
 
         $this->controller->response->body($view->render($template, 'error'));
         $this->controller->response->type('html');

+ 5 - 11
src/View/Cell.php

@@ -78,13 +78,6 @@ abstract class Cell
     public $response;
 
     /**
-     * The theme name that will be used to render.
-     *
-     * @var string
-     */
-    public $theme;
-
-    /**
      * The helpers this cell uses.
      *
      * This property is copied automatically when using the CellTrait
@@ -100,7 +93,7 @@ abstract class Cell
      * @see \Cake\View\View
      */
     protected $_validViewOptions = [
-        'viewVars', 'helpers', 'viewPath', 'plugin', 'theme'
+        'viewPath'
     ];
 
     /**
@@ -167,14 +160,15 @@ abstract class Cell
         if ($template === null) {
             $template = $this->template;
         }
-        $this->_view = null;
-        $this->View = $this->getView();
-        $this->_view->layout(false);
+        $builder = $this->viewBuilder();
+        $builder->layout(false);
+        $builder->template($template);
 
         $cache = [];
         if ($this->_cache) {
             $cache = $this->_cacheConfig($template);
         }
+        $this->View = $this->getView();
 
         $render = function () use ($template) {
             $className = substr(strrchr(get_class($this), "\\"), 1);

+ 13 - 3
src/View/CellTrait.php

@@ -104,16 +104,26 @@ trait CellTrait
     {
         $instance = new $className($this->request, $this->response, $this->eventManager(), $options);
         $instance->template = Inflector::underscore($action);
-        $instance->plugin = !empty($plugin) ? $plugin : null;
-        $instance->theme = !empty($this->theme) ? $this->theme : null;
+
+        $builder = $instance->viewBuilder();
+        if (!empty($plugin)) {
+            $builder->plugin($plugin);
+        }
+        if (!empty($this->theme)) {
+            $builder->theme($this->theme);
+        }
         if (!empty($this->helpers)) {
+            $builder->helpers($this->helpers);
             $instance->helpers = $this->helpers;
         }
         if (isset($this->viewClass)) {
+            $builder->className($this->viewClass);
             $instance->viewClass = $this->viewClass;
         }
         if ($this instanceof View) {
-            $instance->viewClass = get_class($this);
+            $class = get_class($this);
+            $builder->className($class);
+            $instance->viewClass = $class;
         }
         return $instance;
     }

+ 4 - 2
src/View/ViewVarsTrait.php

@@ -130,8 +130,10 @@ trait ViewVarsTrait
             }
         }
 
-        if (isset($this->name)) {
-            $builder->name($this->name);
+        foreach (['name', 'helpers', 'plugin'] as $prop) {
+            if (isset($this->{$prop})) {
+                $builder->{$prop}($this->{$prop});
+            }
         }
 
         return $builder->build(

+ 1 - 0
tests/TestCase/Error/DebuggerTest.php

@@ -308,6 +308,7 @@ object(Cake\View\View) {
 	[protected] _stack => []
 	[protected] _eventManager => object(Cake\Event\EventManager) {}
 	[protected] _eventClass => '\Cake\Event\Event'
+	[protected] _viewBuilder => null
 }
 TEXT;
 

+ 3 - 3
tests/TestCase/Error/ExceptionRendererTest.php

@@ -706,7 +706,7 @@ class ExceptionRendererTest extends TestCase
         $ExceptionRenderer->controller = $this->getMock('Cake\Controller\Controller', ['render']);
         $ExceptionRenderer->controller->helpers = ['Fail', 'Boom'];
         $ExceptionRenderer->controller->eventManager()->on('Controller.beforeRender', function (Event $event) {
-            $event->subject()->getView()->layoutPath = 'boom';
+            $event->subject()->viewBuilder()->layoutPath('boom');
         });
         $ExceptionRenderer->controller->request = new Request;
 
@@ -726,8 +726,8 @@ class ExceptionRendererTest extends TestCase
         $ExceptionRenderer->controller->response = $response;
 
         $ExceptionRenderer->render();
-        $this->assertEquals('', $ExceptionRenderer->controller->getView()->layoutPath);
-        //$this->assertEquals('Error', $ExceptionRenderer->controller->getView()->viewPath);
+        $this->assertEquals('', $ExceptionRenderer->controller->viewBuilder()->layoutPath());
+        $this->assertEquals('Error', $ExceptionRenderer->controller->viewBuilder()->viewPath());
     }
 
     /**

+ 2 - 2
tests/TestCase/View/CellTest.php

@@ -168,9 +168,9 @@ class CellTest extends TestCase
         $this->View->theme = 'TestTheme';
         $cell = $this->View->cell('Articles', ['msg' => 'hello world!']);
 
-        $this->assertEquals($this->View->theme, $cell->theme);
+        $this->assertEquals($this->View->theme, $cell->viewBuilder()->theme());
         $this->assertContains('Themed cell content.', $cell->render());
-        $this->assertEquals($cell->View->theme, $cell->theme);
+        $this->assertEquals($cell->View->theme, $cell->viewBuilder()->theme());
     }
 
     /**

+ 2 - 2
tests/test_app/TestApp/Error/TestAppsExceptionRenderer.php

@@ -24,10 +24,10 @@ class TestAppsExceptionRenderer extends ExceptionRenderer
         $response = new Response();
         try {
             $controller = new TestAppsErrorController($request, $response);
-            $controller->getView()->layout = 'banana';
+            $controller->viewBuilder()->layout('banana');
         } catch (\Exception $e) {
             $controller = new Controller($request, $response);
-            $controller->viewPath = 'Error';
+            $controller->viewBuilder()->viewPath('Error');
         }
         return $controller;
     }