Browse Source

Don't load Helpers in dataviews when _serialize is set.

Loading helpers when they aren't going to be used is wasteful.
mark_story 12 years ago
parent
commit
c03edd9d1a

+ 19 - 0
lib/Cake/Test/Case/View/JsonViewTest.php

@@ -54,6 +54,25 @@ class JsonViewTest extends CakeTestCase {
 	}
 
 /**
+ * Test that rendering with _serialize does not load helpers
+ *
+ * @return void
+ */
+	public function testRenderSerializeNoHelpers() {
+		$Request = new CakeRequest();
+		$Response = new CakeResponse();
+		$Controller = new Controller($Request, $Response);
+		$Controller->helpers = array('Html');
+		$Controller->set(array(
+			'_serialize' => 'tags',
+			'tags' => array('cakephp', 'framework')
+		));
+		$View = new JsonView($Controller);
+		$View->render();
+		$this->assertFalse(isset($View->Html), 'No helper loaded.');
+	}
+
+/**
  * Test render with an array in _serialize
  *
  * @return void

+ 19 - 0
lib/Cake/Test/Case/View/XmlViewTest.php

@@ -80,6 +80,25 @@ class XmlViewTest extends CakeTestCase {
 	}
 
 /**
+ * Test that rendering with _serialize does not load helpers
+ *
+ * @return void
+ */
+	public function testRenderSerializeNoHelpers() {
+		$Request = new CakeRequest();
+		$Response = new CakeResponse();
+		$Controller = new Controller($Request, $Response);
+		$Controller->helpers = array('Html');
+		$Controller->set(array(
+			'_serialize' => 'tags',
+			'tags' => array('cakephp', 'framework')
+		));
+		$View = new XmlView($Controller);
+		$View->render();
+		$this->assertFalse(isset($View->Html), 'No helper loaded.');
+	}
+
+/**
  * Test render with an array in _serialize
  *
  * @return void

+ 12 - 0
lib/Cake/View/JsonView.php

@@ -73,6 +73,18 @@ class JsonView extends View {
 	}
 
 /**
+ * Skip loading helpers if this is a _serialize based view.
+ *
+ * @return void
+ */
+	public function loadHelpers() {
+		if (isset($this->viewVars['_serialize'])) {
+			return;
+		}
+		parent::loadHelpers();
+	}
+
+/**
  * Render a JSON view.
  *
  * ### Special parameters

+ 12 - 0
lib/Cake/View/XmlView.php

@@ -73,6 +73,18 @@ class XmlView extends View {
 	}
 
 /**
+ * Skip loading helpers if this is a _serialize based view.
+ *
+ * @return void
+ */
+	public function loadHelpers() {
+		if (isset($this->viewVars['_serialize'])) {
+			return;
+		}
+		parent::loadHelpers();
+	}
+
+/**
  * Render a XML view.
  *
  * Uses the special '_serialize' parameter to convert a set of