Issue #2830631 by alexpott, cilefen, yunke, andypost: Remove code that tries to use _raw_variables for route argument resolution as it does not work

merge-requests/2419/head
catch 2019-11-20 22:53:15 +00:00
parent 4b0a908f49
commit e669b4e863
3 changed files with 1 additions and 36 deletions

View File

@ -733,16 +733,13 @@ services:
arguments: ['@event_dispatcher', '@controller_resolver', '@request_stack', '@http_kernel.controller.argument_resolver']
http_kernel.controller.argument_resolver:
class: Symfony\Component\HttpKernel\Controller\ArgumentResolver
arguments: ['@http_kernel.controller.argument_metadata_factory', ['@argument_resolver.request_attribute', '@argument_resolver.raw_parameter', '@argument_resolver.request', '@argument_resolver.psr7_request', '@argument_resolver.route_match', '@argument_resolver.default']]
arguments: ['@http_kernel.controller.argument_metadata_factory', ['@argument_resolver.request_attribute', '@argument_resolver.request', '@argument_resolver.psr7_request', '@argument_resolver.route_match', '@argument_resolver.default']]
http_kernel.controller.argument_metadata_factory:
class: Symfony\Component\HttpKernel\ControllerMetadata\ArgumentMetadataFactory
public: false
argument_resolver.request_attribute:
class: Symfony\Component\HttpKernel\Controller\ArgumentResolver\RequestAttributeValueResolver
public: false
argument_resolver.raw_parameter:
class: Drupal\Core\Controller\ArgumentResolver\RawParameterValueResolver
public: false
argument_resolver.request:
class: Symfony\Component\HttpKernel\Controller\ArgumentResolver\RequestValueResolver
public: false

View File

@ -1,28 +0,0 @@
<?php
namespace Drupal\Core\Controller\ArgumentResolver;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpKernel\Controller\ArgumentValueResolverInterface;
use Symfony\Component\HttpKernel\ControllerMetadata\ArgumentMetadata;
/**
* Yields an argument's value from the request's _raw_variables attribute.
*/
final class RawParameterValueResolver implements ArgumentValueResolverInterface {
/**
* {@inheritdoc}
*/
public function supports(Request $request, ArgumentMetadata $argument) {
return !$argument->isVariadic() && $request->attributes->has('_raw_variables') && array_key_exists($argument->getName(), $request->attributes->get('_raw_variables'));
}
/**
* {@inheritdoc}
*/
public function resolve(Request $request, ArgumentMetadata $argument) {
yield $request->attributes->get('_raw_variables')[$argument->getName()];
}
}

View File

@ -131,15 +131,11 @@ class ControllerResolver extends BaseControllerResolver implements ControllerRes
// to ensure it is removed in Drupal 9.
@trigger_error(sprintf('%s is deprecated as of 8.6.0 and will be removed in 9.0. Inject the "http_kernel.controller.argument_resolver" service instead.', __METHOD__, ArgumentResolverInterface::class), E_USER_DEPRECATED);
$attributes = $request->attributes->all();
$raw_parameters = $request->attributes->has('_raw_variables') ? $request->attributes->get('_raw_variables') : [];
$arguments = [];
foreach ($parameters as $param) {
if (array_key_exists($param->name, $attributes)) {
$arguments[] = $attributes[$param->name];
}
elseif (array_key_exists($param->name, $raw_parameters)) {
$arguments[] = $attributes[$param->name];
}
elseif ($param->getClass() && $param->getClass()->isInstance($request)) {
$arguments[] = $request;
}