[HttpKernel] Fix service arg resolver for controllers as array callables
This commit is contained in:
parent
a9e9f36799
commit
fc3d3bbf60
@ -35,7 +35,13 @@ final class ServiceValueResolver implements ArgumentValueResolverInterface
|
||||
*/
|
||||
public function supports(Request $request, ArgumentMetadata $argument)
|
||||
{
|
||||
return is_string($controller = $request->attributes->get('_controller')) && $this->container->has($controller) && $this->container->get($controller)->has($argument->getName());
|
||||
$controller = $request->attributes->get('_controller');
|
||||
|
||||
if (\is_array($controller) && \is_callable($controller, true) && \is_string($controller[0])) {
|
||||
$controller = $controller[0].'::'.$controller[1];
|
||||
}
|
||||
|
||||
return \is_string($controller) && $this->container->has($controller) && $this->container->get($controller)->has($argument->getName());
|
||||
}
|
||||
|
||||
/**
|
||||
@ -43,6 +49,10 @@ final class ServiceValueResolver implements ArgumentValueResolverInterface
|
||||
*/
|
||||
public function resolve(Request $request, ArgumentMetadata $argument)
|
||||
{
|
||||
yield $this->container->get($request->attributes->get('_controller'))->get($argument->getName());
|
||||
if (\is_array($controller = $request->attributes->get('_controller'))) {
|
||||
$controller = $controller[0].'::'.$controller[1];
|
||||
}
|
||||
|
||||
yield $this->container->get($controller)->get($argument->getName());
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user