Issue #2830631 by alexpott, cilefen, yunke, andypost: Remove code that tries to use _raw_variables for route argument resolution as it does not work
parent
4b0a908f49
commit
e669b4e863
|
@ -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
|
||||
|
|
|
@ -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()];
|
||||
}
|
||||
|
||||
}
|
|
@ -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;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue