[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)
|
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)
|
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