Issue #2988152 by slootjes, tim.plunkett: Allow invokable services as controllers
parent
9547959081
commit
aca89d4c5a
|
@ -66,9 +66,7 @@ class ControllerResolver extends BaseControllerResolver implements ControllerRes
|
|||
if (function_exists($controller)) {
|
||||
return $controller;
|
||||
}
|
||||
elseif (method_exists($controller, '__invoke')) {
|
||||
return new $controller();
|
||||
}
|
||||
return $this->classResolver->getInstanceFromDefinition($controller);
|
||||
}
|
||||
|
||||
$callable = $this->createController($controller);
|
||||
|
|
|
@ -171,6 +171,7 @@ class ControllerResolverTest extends UnitTestCase {
|
|||
* @dataProvider providerTestGetControllerFromDefinition
|
||||
*/
|
||||
public function testGetControllerFromDefinition($definition, $output) {
|
||||
$this->container->set('invoke_service', new MockInvokeController());
|
||||
$controller = $this->controllerResolver->getControllerFromDefinition($definition);
|
||||
$this->assertCallableController($controller, NULL, $output);
|
||||
}
|
||||
|
@ -188,6 +189,8 @@ class ControllerResolverTest extends UnitTestCase {
|
|||
[new MockInvokeController(), 'This used __invoke().'],
|
||||
// Tests a class using __invoke().
|
||||
['Drupal\Tests\Core\Controller\MockInvokeController', 'This used __invoke().'],
|
||||
// Tests a service from the container using __invoke().
|
||||
['invoke_service', 'This used __invoke().'],
|
||||
];
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue