浏览代码

Only cast if desired.

Mark Scherer 10 年之前
父节点
当前提交
acb48bcd39
共有 2 个文件被更改,包括 11 次插入7 次删除
  1. 3 1
      Model/Behavior/JsonableBehavior.php
  2. 8 6
      Test/Case/Model/Behavior/JsonableBehaviorTest.php

+ 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