Explorar o código

Fixes ZF-3472 - setParams() doesn't set keys correctly when value is null.
The value is missed due to array addition, and backup check doesn't evaluate the parameter values


git-svn-id: http://framework.zend.com/svn/framework/standard/trunk@24372 44c647ce-9c0f-0410-b52a-842ac1e357ba

padraic %!s(int64=14) %!d(string=hai) anos
pai
achega
7adf1538a6

+ 1 - 1
library/Zend/Controller/Request/Abstract.php

@@ -312,7 +312,7 @@ abstract class Zend_Controller_Request_Abstract
     {
         $this->_params = $this->_params + (array) $array;
 
-        foreach ($this->_params as $key => $value) {
+        foreach ($array as $key => $value) {
             if (null === $value) {
                 unset($this->_params[$key]);
             }

+ 13 - 0
tests/Zend/Controller/Request/SimpleTest.php

@@ -69,6 +69,19 @@ class Zend_Controller_Request_SimpleTest extends PHPUnit_Framework_TestCase
         $this->assertEquals($request->getParam('test4'), 'test5');
     }
 
+    /**
+     * @group ZF-3472
+     */
+    public function testSettingParamToNullInSetparamsCorrectlyUnsetsValue()
+    {
+        $request = new Zend_Controller_Request_Simple;
+        $request->setParam('key', 'value');
+        $request->setParams(array(
+            'key' => null
+        ));
+        $this->assertNull($request->getParam('key'));
+    }
+
 }
 
 // Call Zend_Controller_Request_SimpleTest::main() if this source file is executed directly.