Преглед изворни кода

merge r25090 to release-1.12

git-svn-id: http://framework.zend.com/svn/framework/standard/branches/release-1.12@25091 44c647ce-9c0f-0410-b52a-842ac1e357ba
rob пре 13 година
родитељ
комит
6e4694d5dc
2 измењених фајлова са 33 додато и 11 уклоњено
  1. 13 11
      library/Zend/View/Helper/Json.php
  2. 20 0
      tests/Zend/View/Helper/JsonTest.php

+ 13 - 11
library/Zend/View/Helper/Json.php

@@ -57,17 +57,19 @@ class Zend_View_Helper_Json extends Zend_View_Helper_Abstract
     public function json($data, $keepLayouts = false, $encodeData = true)
     {
         $options = array();
-        if (is_array($keepLayouts))
-        {
-            $options     = $keepLayouts;
-            $keepLayouts = (array_key_exists('keepLayouts', $keepLayouts))
-                            ? $keepLayouts['keepLayouts']
-                            : false;
-            unset($options['keepLayouts']);
-            $encodeData  = (array_key_exists('encodeData', $keepLayouts))
-                            ? $keepLayouts['encodeData']
-                            : $encodeData;
-            unset($options['encodeData']);
+        if (is_array($keepLayouts)) {
+            $options = $keepLayouts;
+
+            $keepLayouts = false;
+            if (array_key_exists('keepLayouts', $options)) {
+                $keepLayouts = $options['keepLayouts'];
+                unset($options['keepLayouts']);
+            }
+
+            if (array_key_exists('encodeData', $options)) {
+                $encodeData = $options['encodeData'];
+                unset($options['encodeData']);
+            }
         }
 
         if ($encodeData) {

+ 20 - 0
tests/Zend/View/Helper/JsonTest.php

@@ -143,6 +143,26 @@ class Zend_View_Helper_JsonTest extends PHPUnit_Framework_TestCase
         $data = $this->helper->json(array('foobar'), true);
         $this->assertTrue($layout->isEnabled());
     }
+
+    /**
+     * @group ZF-12397
+     */
+    public function testJsonHelperWithKeepLayoutAsArray()
+    {
+        $layout = Zend_Layout::startMvc();
+        $this->assertTrue($layout->isEnabled());
+        $data = $this->helper->json(
+            array(
+                 'foobar',
+            ),
+            array(
+                 'keepLayouts' => true,
+                 'encodeData'  => false,
+            )
+        );
+        $this->assertTrue($layout->isEnabled());
+        $this->assertSame(array('foobar'), $data);
+    }
     
     /**
      * @group ZF-10977