8000 [HttpFoundation] tried to keep the original Request URI as much as po… · symfony/symfony@4f5b8f0 · GitHub
[go: up one dir, main page]

Skip to content

Commit 4f5b8f0

Browse files
committed
[HttpFoundation] tried to keep the original Request URI as much as possible to avoid different behavior between ::createFromGlobals() and ::create()
1 parent 6ec2cba commit 4f5b8f0

File tree

2 files changed

+15
-2
lines changed

2 files changed

+15
-2
lines changed

src/Symfony/Component/HttpFoundation/Request.php

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -348,11 +348,20 @@ public static function create($uri, $method = 'GET', $parameters = array(), $coo
348348
break;
349349
}
350350

351+
$queryString = '';
351352
if (isset($components['query'])) {
352353
parse_str(html_entity_decode($components['query']), $qs);
353-
$query = array_replace($qs, $query);
354+
355+
if ($query) {
356+
$query = array_replace($qs, $query);
357+
$queryString = http_build_query($query, '', '&');
358+
} else {
359+
$query = $qs;
360+
$queryString = $components['query'];
361+
}
362+
} elseif ($query) {
363+
$queryString = http_build_query($query, '', '&');
354364
}
355-
$queryString = http_build_query($query, '', '&');
356365

357366
$server['REQUEST_URI'] = $components['path'].('' !== $queryString ? '?'.$queryString : '');
358367
$server['QUERY_STRING'] = $queryString;

src/Symfony/Component/HttpFoundation/Tests/RequestTest.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -220,6 +220,10 @@ public function testCreate()
220220
$this->assertEquals('testnopass', $request->getUser());
221221
$this->assertNull($request->getPassword());
222222
$this->assertFalse($request->isSecure());
223+
224+
$request = Request::create('http://test.com/?foo');
225+
$this->assertEquals('/?foo', $request->getRequestUri());
226+
$this->assertEquals(array('foo' => ''), $request->query->all());
223227
}
224228

225229
/**

0 commit comments

Comments
 (0)
0