当前位置: 首页 > 知识库问答 >
问题:

Symfony 4服务注入参数太少

宗政楚
2023-03-14

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

这是它的构造函数...

public function __construct(EntityManagerInterface $entityManager)
{
    $this->em = $entityManager;
}

然后在我的services.yaml我添加了这个...

    App\Blocks\:
        resource: '../src/Blocks'
        tags: ['controller.service_arguments']

运行代码(开发环境、缓存清除等)时,出现“参数太少”错误。这不是注入依赖性。

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

谢谢

共有1个答案

皇甫福
2023-03-14

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

App\Blocks\:
    resource: '../src/Blocks'
    tags: ['controller.service_arguments']
    arguments:
        - '@doctrine.orm.default_entity_manager'

@用于不将名称解释为简单字符串,而是获取实际服务。

命名有点棘手;这个答案让我明白了命名是如何构建的:

对于默认的特殊情况,即使在上面提到的配置键中没有显式定义,也可以作为doctrine.orm.default_entity_manager使用。

我尝试在我的应用程序上添加该字符串作为参数,但没有失败。然后我打了一个错字,它失败了。所以我假设default_entity_manager是自动定义的(我不确定在哪里)。

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

App\:
    resource: '../src/*'
    exclude: '../src/{DependencyInjection,Tests, ....}'

并确保未列在排除文件夹中。

 类似资料:
  • 我正在尝试将一些细枝视图作为定制邮件服务的模板注入,这将被另一个服务用作依赖项。 我不明白为什么,但好像Symfony没有看到我试图在$parameters中注入的参数。 将此服务数组作为参数注入的正确方法是什么? 以下是services.yaml部分: RestMailer服务构造函数: 以下是返回的错误: 在DefinitionErrorExceptionPass.php第54行中: 无法自动

  • 我有一个Angular2项目2.0.0,在试图加载该项目时,浏览器中出现了以下错误: 误差 Metadata_Resolver.js:508未捕获错误:无法解析CustomerService:(AngularFireDatabase,?,Token_FirebaseApp)的所有参数。(…)CompileMetadataResolver.getDependenciesMetadata@metada

  • 我试图在我的services.yaml中为ImageManager.php获取一个参数,但它不起作用,我无法解决此错误。 错误是这样的: 类型错误:参数太少,无法运行App\Manager\ImageManager::__construct(),0在C:\wamp64\www\SymfonyAPI\var\ache\dev\ContainerZxFSS5S\getImageManagerServi

  • 我有一个小的外部库,它公开了许多类。 在我的symfony4项目中,我想声明我的类来自供应商,作为带有autowire和public的服务。因此,我将我的库包含在composer中,并将类似这样的psr配置添加到composer中。json: 在那之后,我试图改变我的服务。yaml进入symfony,如下所示: 如果启动测试或运行应用程序,则会返回以下错误: 如果我申报服役。yaml此界面工作正常

  • 问题内容: 我有服务: 但是当我打电话时,我无法访问和获得。因此,对我而言,逻辑上的步骤是为save()提供,因此我还必须将其提供/注入到。因此,如果我这样做: 我收到以下错误: 错误:[$ injector:unpr]未知提供程序:$ scopeProvider <-$ scope <-StudentService 错误中的链接(哇,很干净!)让我知道它与注入器相关,并且可能与js文件的声明顺序

  • 问题内容: 我已经创建了自己的服务,并且需要注入原则EntityManager,但是我没有看到在我的服务上被调用,并且注入不起作用。 这是代码和配置: 这是我的包 我已经将.yml导入了我的应用中 当我在控制器中致电服务时 我得到一个对象(不为null),但是在UserService中为null,正如我已经提到的,从未调用过UserService上的构造函数 还有一件事,Controller和Us