From afe1d7d87779d5552f623f0243fac55dead6379a Mon Sep 17 00:00:00 2001 From: gregs Date: Wed, 28 Oct 2015 19:43:13 -0400 Subject: [PATCH 1/3] Handle new _serialize === true functionality --- src/Controller/Component/AjaxComponent.php | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/Controller/Component/AjaxComponent.php b/src/Controller/Component/AjaxComponent.php index e3f994a6..588c30a0 100644 --- a/src/Controller/Component/AjaxComponent.php +++ b/src/Controller/Component/AjaxComponent.php @@ -75,7 +75,7 @@ public function beforeRender(Event $event) { } /** - * AjaxComponent::respondAsAjax() + * AjaxComponent::_respondAsAjax() * * @return void */ @@ -88,11 +88,14 @@ protected function _respondAsAjax() { $this->Controller->set('_message', $message); } - $serializeKeys = ['_message']; - if (!empty($this->Controller->viewVars['_serialize'])) { - $serializeKeys = array_merge($serializeKeys, $this->Controller->viewVars['_serialize']); + // If _serialize is true, *all* viewVars will be serialized; no need to add _message. + if ($this->Controller->viewVars['_serialize'] !== true) { + $serializeKeys = ['_message']; + if (!empty($this->Controller->viewVars['_serialize'])) { + $serializeKeys = array_merge($serializeKeys, $this->Controller->viewVars['_serialize']); + } + $this->Controller->set('_serialize', $serializeKeys); } - $this->Controller->set('_serialize', $serializeKeys); } /** From 94897e27edb033a4c3eaa0dfb41fe23380f94515 Mon Sep 17 00:00:00 2001 From: gregs Date: Wed, 28 Oct 2015 19:54:28 -0400 Subject: [PATCH 2/3] Return early for cleaner code --- src/Controller/Component/AjaxComponent.php | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/Controller/Component/AjaxComponent.php b/src/Controller/Component/AjaxComponent.php index 588c30a0..40bd9157 100644 --- a/src/Controller/Component/AjaxComponent.php +++ b/src/Controller/Component/AjaxComponent.php @@ -89,13 +89,15 @@ protected function _respondAsAjax() { } // If _serialize is true, *all* viewVars will be serialized; no need to add _message. - if ($this->Controller->viewVars['_serialize'] !== true) { - $serializeKeys = ['_message']; - if (!empty($this->Controller->viewVars['_serialize'])) { - $serializeKeys = array_merge($serializeKeys, $this->Controller->viewVars['_serialize']); - } - $this->Controller->set('_serialize', $serializeKeys); + if ($this->Controller->viewVars['_serialize'] === true) { + return; + } + + $serializeKeys = ['_message']; + if (!empty($this->Controller->viewVars['_serialize'])) { + $serializeKeys = array_merge($serializeKeys, $this->Controller->viewVars['_serialize']); } + $this->Controller->set('_serialize', $serializeKeys); } /** From 8eb57e0471acf8625aeaaa7d7975c9e7f65d640b Mon Sep 17 00:00:00 2001 From: gregs Date: Wed, 28 Oct 2015 20:06:48 -0400 Subject: [PATCH 3/3] Ensure _serialize is set before testing it --- src/Controller/Component/AjaxComponent.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Controller/Component/AjaxComponent.php b/src/Controller/Component/AjaxComponent.php index 40bd9157..86b932e6 100644 --- a/src/Controller/Component/AjaxComponent.php +++ b/src/Controller/Component/AjaxComponent.php @@ -89,7 +89,7 @@ protected function _respondAsAjax() { } // If _serialize is true, *all* viewVars will be serialized; no need to add _message. - if ($this->Controller->viewVars['_serialize'] === true) { + if (!empty($this->Controller->viewVars['_serialize']) && $this->Controller->viewVars['_serialize'] === true) { return; }