Browse Source

Only cast if desired.

Mark Scherer 10 years ago
parent
commit
acb48bcd39

+ 3 - 1
Model/Behavior/JsonableBehavior.php

@@ -207,7 +207,9 @@ class JsonableBehavior extends ModelBehavior {
 		if ($decoded === false) {
 			return false;
 		}
-		$decoded = (array)$decoded;
+		if ($this->settings[$Model->alias]['decodeParams']['assoc']) {
+			$decoded = (array)$decoded;
+		}
 		if ($this->settings[$Model->alias]['output'] === 'param') {
 			$decoded = $this->_toParam($Model, $decoded);
 		} elseif ($this->settings[$Model->alias]['output'] === 'list') {

+ 8 - 6
Test/Case/Model/Behavior/JsonableBehaviorTest.php

@@ -187,9 +187,10 @@ class JsonableBehaviorTest extends MyCakeTestCase {
 		$this->Comment->save($data);
 
 		$res = $this->Comment->find('first', ['conditions' => ['title' => 'param']]);
-		$obj = new stdClass();
-		$obj->y = 'z';
-		$expected = ['x' => $obj];
+		$obj = new \stdClass();
+		$obj->x = new \stdClass();
+		$obj->x->y = 'z';
+		$expected = $obj;
 		$this->assertEquals($expected, $res['JsonableComment']['details']);
 	}
 
@@ -206,9 +207,10 @@ class JsonableBehaviorTest extends MyCakeTestCase {
 
 		// Test decode with default params
 		$res = $this->Comment->find('first', ['conditions' => ['title' => 'param']]);
-		$obj = new stdClass();
-		$obj->y = 'z';
-		$expected = ['x' => $obj];
+		$obj = new \stdClass();
+		$obj->x = new \stdClass();
+		$obj->x->y = 'z';
+		$expected = $obj;
 		$this->assertEquals($expected, $res['JsonableComment']['details']);
 
 		// Test decode with assoc = true