Browse Source

Fix duplicate values when merging POST data.

Fixes #2648
mark_story 14 years ago
parent
commit
17eb0e4f68
2 changed files with 14 additions and 7 deletions
  1. 7 7
      lib/Cake/Network/CakeRequest.php
  2. 7 0
      lib/Cake/Test/Case/Network/CakeRequestTest.php

+ 7 - 7
lib/Cake/Network/CakeRequest.php

@@ -174,15 +174,15 @@ class CakeRequest implements ArrayAccess {
 			}
 			unset($this->data['_method']);
 		}
-		$data = $this->data;
+
 		if (isset($this->data['data'])) {
 			$data = $this->data['data'];
-		}
-		if (count($this->data) <= 1) {
-			$this->data = $data;
-		} else {
-			unset($this->data['data']);
-			$this->data = Set::merge($this->data, $data);
+			if (count($this->data) <= 1) {
+				$this->data = $data;
+			} else {
+				unset($this->data['data']);
+				$this->data = Set::merge($this->data, $data);
+			}
 		}
 	}
 

+ 7 - 0
lib/Cake/Test/Case/Network/CakeRequestTest.php

@@ -204,6 +204,13 @@ class CakeRequestTest extends CakeTestCase {
 		));
 		$request = new CakeRequest('some/path');
 		$this->assertEquals($_POST['data'], $request->data);
+
+		$_POST = array(
+			'a' => array(1, 2),
+			'b' => array(1, 2)
+		);
+		$request = new CakeRequest('some/path');
+		$this->assertEquals($_POST, $request->data);
 	}
 
 /**