diff --git a/core/lib/Drupal/Core/Routing/RequestHelper.php b/core/lib/Drupal/Core/Routing/RequestHelper.php index d137e7f..b060e47 100644 --- a/core/lib/Drupal/Core/Routing/RequestHelper.php +++ b/core/lib/Drupal/Core/Routing/RequestHelper.php @@ -30,7 +30,7 @@ class RequestHelper { * The query (GET) or request (POST) parameters. * @param array $query * The GET parameters. - * @param array $request + * @param array $post * The POST parameters. * @param array $attributes * The request attributes (parameters parsed from the PATH_INFO, ...). @@ -47,8 +47,8 @@ class RequestHelper { * @see \Symfony\Component\HttpFoundation\Request::create() * @see \Symfony\Component\HttpFoundation\Request::duplicate() */ - public static function duplicate(Request $original_request, $uri, $method = 'GET', $parameters = array(), array $query = NULL, array $request = NULL, array $attributes = NULL, array $cookies = NULL, array $files = NULL, array $server = NULL) { - $request_clone = $original_request->duplicate($query, $request, $attributes, $cookies, $files, $server); + public static function duplicate(Request $original_request, $uri, $method = 'GET', $parameters = array(), array $query = NULL, array $post = NULL, array $attributes = NULL, array $cookies = NULL, array $files = NULL, array $server = NULL) { + $request = $original_request->duplicate($query, $post, $attributes, $cookies, $files, $server); $server = array(); @@ -97,11 +97,11 @@ public static function duplicate(Request $original_request, $uri, $method = 'GET $server['CONTENT_TYPE'] = 'application/x-www-form-urlencoded'; } case 'PATCH': - $request = $parameters; + $post = $parameters; $query = array(); break; default: - $request = array(); + $post = array(); $query = $parameters; break; } @@ -119,12 +119,13 @@ public static function duplicate(Request $original_request, $uri, $method = 'GET $server['REQUEST_URI'] = $components['path'] . $query_string; $server['QUERY_STRING'] = $query_string; - $request_clone->server->add($server); + $request->server->add($server); + // The 'request' attribute name corresponds to $_REQUEST, but Symfony + // documents it as holding the POST parameters. + $request->request->add($post); + $request->query->add($query); - $request_clone->request->add($request); - $request_clone->query->add($query); - - return $request_clone; + return $request; } }