Dependency injection Symfony 4服务注入参数太少

Dependency injection Symfony 4服务注入参数太少,dependency-injection,symfony4,Dependency Injection,Symfony4,在我的symfony4项目中,我在/src/Blocks/Hello/HelloBlock.php文件中创建了一个HelloBlock类 这是它的构造函数 public function __construct(EntityManagerInterface $entityManager) { $this->em = $entityManager; } 然后在我的服务中。yaml我添加了这个 App\Blocks\: resource: '../src/Bl

在我的symfony4项目中,我在/src/Blocks/Hello/HelloBlock.php文件中创建了一个HelloBlock类

这是它的构造函数

public function __construct(EntityManagerInterface $entityManager)
{
    $this->em = $entityManager;
}
然后在我的服务中。yaml我添加了这个

    App\Blocks\:
        resource: '../src/Blocks'
        tags: ['controller.service_arguments']
运行代码(开发环境、缓存清除等)时,出现“参数太少”错误。这不是注入依赖性

有人能帮忙吗?我以为这就是Symfony DI应该做的

谢谢

缺少的参数: 您可能必须向服务定义提供
参数:

App\Blocks\:
    resource: '../src/Blocks'
    tags: ['controller.service_arguments']
    arguments:
        - '@doctrine.orm.default_entity_manager'
@
用于而不是将名称解释为简单字符串,而是获取实际服务

默认原则命名: 命名有点棘手;使我了解了命名是如何构建的:(根据
原则.orm.entity\u managers
YAML定义)连接到
\u entity\u manager

对于
default
的特殊情况,即使在上述配置键中没有明确定义,也可以作为
doctor.orm.default\u entity\u manager
使用

我的假设是: 我试着在我的应用程序上添加这个字符串作为参数,但没有失败。然后我输入了一个拼写错误,结果失败了。所以我假设
default\u entity\u manager
是自动定义的(我不确定在哪里)


否则: 如果它不工作,另一个解决方案是验证entityManager为什么没有自动连接。检查配置以自动连接
src/
文件夹

App\:
    resource: '../src/*'
    exclude: '../src/{DependencyInjection,Tests, ....}'
并确保
未列在
排除
文件夹中。

其中提到了第三方服务所需的
参数定义:
App\:
    resource: '../src/*'
    exclude: '../src/{DependencyInjection,Tests, ....}'