From e2e42ee185f48d88350d7c060636ef009b8c0b3c Mon Sep 17 00:00:00 2001 From: Ceeram Date: Fri, 10 Aug 2012 09:54:05 +0200 Subject: [PATCH] move serialization to separate method, for easier overriding in subclasses --- lib/Cake/View/JsonView.php | 31 +++++++++++++++++++------------ lib/Cake/View/XmlView.php | 36 ++++++++++++++++++++++-------------- 2 files changed, 41 insertions(+), 26 deletions(-) diff --git a/lib/Cake/View/JsonView.php b/lib/Cake/View/JsonView.php index 785f7543752..188c29d1e3a 100644 --- a/lib/Cake/View/JsonView.php +++ b/lib/Cake/View/JsonView.php @@ -82,18 +82,7 @@ public function __construct(Controller $controller = null) { */ public function render($view = null, $layout = null) { if (isset($this->viewVars['_serialize'])) { - $serialize = $this->viewVars['_serialize']; - if (is_array($serialize)) { - $data = array(); - foreach ($serialize as $key) { - $data[$key] = $this->viewVars[$key]; - } - } else { - $data = isset($this->viewVars[$serialize]) ? $this->viewVars[$serialize] : null; - } - $content = json_encode($data); - $this->Blocks->set('content', $content); - return $content; + return $this->_serialize($this->viewVars['_serialize']); } if ($view !== false && $viewFileName = $this->_getViewFileName($view)) { if (!$this->_helpersLoaded) { @@ -105,4 +94,22 @@ public function render($view = null, $layout = null) { } } +/** + * Serialize view vars + * + * @param array $serialize The viewVars that need to be serialized + * @return string The serialized data + */ + protected function _serialize($serialize) { + if (is_array($serialize)) { + $data = array(); + foreach ($serialize as $key) { + $data[$key] = $this->viewVars[$key]; + } + } else { + $data = isset($this->viewVars[$serialize]) ? $this->viewVars[$serialize] : null; + } + return json_encode($data); + } + } diff --git a/lib/Cake/View/XmlView.php b/lib/Cake/View/XmlView.php index f89efa6ee23..9b81066baf6 100644 --- a/lib/Cake/View/XmlView.php +++ b/lib/Cake/View/XmlView.php @@ -85,20 +85,7 @@ public function __construct(Controller $controller = null) { */ public function render($view = null, $layout = null) { if (isset($this->viewVars['_serialize'])) { - $serialize = $this->viewVars['_serialize']; - if (is_array($serialize)) { - $data = array('response' => array()); - foreach ($serialize as $key) { - $data['response'][$key] = $this->viewVars[$key]; - } - } else { - $data = isset($this->viewVars[$serialize]) ? $this->viewVars[$serialize] : null; - if (is_array($data) && Set::numeric(array_keys($data))) { - $data = array('response' => array($serialize => $data)); - } - } - $content = Xml::fromArray($data)->asXML(); - return $content; + return $this->_serialize($this->viewVars['_serialize']); } if ($view !== false && $viewFileName = $this->_getViewFileName($view)) { if (!$this->_helpersLoaded) { @@ -110,4 +97,25 @@ public function render($view = null, $layout = null) { } } +/** + * Serialize view vars + * + * @param array $serialize The viewVars that need to be serialized + * @return string The serialized data + */ + protected function _serialize($serialize) { + if (is_array($serialize)) { + $data = array('response' => array()); + foreach ($serialize as $key) { + $data['response'][$key] = $this->viewVars[$key]; + } + } else { + $data = isset($this->viewVars[$serialize]) ? $this->viewVars[$serialize] : null; + if (is_array($data) && Set::numeric(array_keys($data))) { + $data = array('response' => array($serialize => $data)); + } + } + return Xml::fromArray($data)->asXML(); + } + }