Fix #18115: Allow to load action-injected services from module's container

This commit is contained in:
ErickSkrauch
2020-06-22 23:49:02 +03:00
committed by GitHub
parent d755004c41
commit 2e21a8275c
6 changed files with 72 additions and 4 deletions

View File

@ -565,9 +565,12 @@ class Controller extends Component implements ViewContextInterface
if (($component = $this->module->get($name, false)) instanceof $typeName) {
$args[] = $component;
$requestedParams[$name] = "Component: " . get_class($component) . " \$$name";
} elseif ($this->module->has($typeName) && ($service = $this->module->get($typeName)) instanceof $typeName) {
$args[] = $service;
$requestedParams[$name] = 'Module ' . get_class($this->module) . " DI: $typeName \$$name";
} elseif (\Yii::$container->has($typeName) && ($service = \Yii::$container->get($typeName)) instanceof $typeName) {
$args[] = $service;
$requestedParams[$name] = "DI: $typeName \$$name";
$requestedParams[$name] = "Container DI: $typeName \$$name";
} elseif ($type->allowsNull()) {
$args[] = null;
$requestedParams[$name] = "Unavailable service: $name";