From ea113922bdf3a70eda434715346ddecc455451a8 Mon Sep 17 00:00:00 2001 From: mark_story Date: Wed, 5 Oct 2011 20:55:17 -0400 Subject: [PATCH] Removing extra 0 index in request parameters. When using requestAction with the return parameter, there would be an extra 0 index element that would create incorrect routes in the requestedAction. Fixes #2067 --- lib/Cake/Core/Object.php | 6 +++-- lib/Cake/Test/Case/Core/ObjectTest.php | 32 ++++++++++++++++++-------- 2 files changed, 26 insertions(+), 12 deletions(-) diff --git a/lib/Cake/Core/Object.php b/lib/Cake/Core/Object.php index bb1ee4ac0..b450d1961 100644 --- a/lib/Cake/Core/Object.php +++ b/lib/Cake/Core/Object.php @@ -65,8 +65,10 @@ class Object { return false; } App::uses('Dispatcher', 'Routing'); - if (in_array('return', $extra, true)) { - $extra = array_merge($extra, array('return' => 0, 'autoRender' => 1)); + if (($index = array_search('return', $extra)) !== false) { + $extra['return'] = 0; + $extra['autoRender'] = 1; + unset($extra[$index]); } if (is_array($url) && !isset($extra['url'])) { $extra['url'] = array(); diff --git a/lib/Cake/Test/Case/Core/ObjectTest.php b/lib/Cake/Test/Case/Core/ObjectTest.php index 81e03f371..d07a47f38 100644 --- a/lib/Cake/Test/Case/Core/ObjectTest.php +++ b/lib/Cake/Test/Case/Core/ObjectTest.php @@ -124,7 +124,16 @@ class RequestActionController extends Controller { * @return array */ public function params_pass() { - return $this->params; + return $this->request; + } + + public function param_check() { + $this->autoRender = false; + $content = ''; + if (isset($this->request->params[0])) { + $content = 'return found'; + } + $this->response->body($content); } } @@ -564,6 +573,18 @@ class ObjectTest extends CakeTestCase { $this->assertTrue($result); } +/** + * Test that requestAction() does not forward the 0 => return value. + * + * @return void + */ + public function testRequestActionRemoveReturnParam() { + $result = $this->object->requestAction( + '/request_action/param_check', array('return') + ); + $this->assertEquals('', $result, 'Return key was found'); + } + /** * Test that requestAction() is populating $this->params properly * @@ -615,13 +636,4 @@ class ObjectTest extends CakeTestCase { $_POST = $_tmp; } - -/** - * testCakeError - * - * @return void - */ - public function testCakeError() { - - } }