Dependency injection Symfony 4服务注入参数太少
在我的symfony4项目中,我在/src/Blocks/Hello/HelloBlock.php文件中创建了一个HelloBlock类 这是它的构造函数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
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, ....}'