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

如何在Symfony服务中注入参数数组?

江飞章
2023-03-14

我正在尝试将一些细枝视图作为定制邮件服务的模板注入,这将被另一个服务用作依赖项。

我不明白为什么,但好像Symfony没有看到我试图在$parameters中注入的参数。

将此服务数组作为参数注入的正确方法是什么?

以下是services.yaml部分:


parameters:
    locale: 'en'
    template: '%fos_user.registration.confirmation.template%'
    resetting: '%fos_user.resetting.email.template%'
    from_email: 'somemail@mail.com'
    confirmation: '%fos_user.registration.confirmation.from_email%'
    resetting_password: '%fos_user.resetting.email.from_email%'

services:

    user.mailer.rest:
        class: App\Mailer\RestMailer
        public: false
        parent: fos_user.mailer.twig_swift
        autoconfigure: false
        autowire: true
        arguments:
            $parameters:
              - '@template'
              - '@resetting'

RestMailer服务构造函数:

php prettyprint-override">public function __construct(\Swift_Mailer $mailer, UrlGeneratorInterface $router, \Twig_Environment $twig, array $parameters)
  {
    $this->mailer = $mailer;
    $this->router = $router;
    $this->twig = $twig;
    $this->parameters = $parameters;
  }

  public function sendConfirmationEmailMessage(UserInterface $user)
  {
    $template = $this->parameters['template']['confirmation'];
//...

以下是返回的错误:

在DefinitionErrorExceptionPass.php第54行中:

无法自动连线服务“App\Mailer\RestMailer”:参数“$parameters”

共有1个答案

钮晟
2023-03-14

您已经在services.yml中配置了吗?

如果要使用config.yml中的参数,必须在services.yml中设置以使用/调用参数。

 类似资料:
  • 在我的symfony4项目中,我在/src/Blocks/Hello/HelloBlock中创建了一个HelloBlock类。php文件。 这是它的构造函数... 然后在我的services.yaml我添加了这个... 运行代码(开发环境、缓存清除等)时,出现“参数太少”错误。这不是注入依赖性。 有人能帮忙吗?我以为这就是Symfony DI应该做的。 谢谢

  • 问题内容: 我需要将两个对象注入。其中一个是的实例,我得到这样的信息: 那么如何在我的services.yml中声明呢?这是服务: 问题答案: 我找到了此链接,这对我有用:

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

  • 我已经创建了自己的服务,需要注入doctrine EntityManager,但我看不到在我的服务上调用了,注入也不起作用。 以下是代码和配置: 这是我的包中的 我已经导入了. yml在在我的应用程序中 当我在控制器中调用服务时 我得到一个对象(不是null),但是

  • 我想在构造函数中使用Request类,这是我想运行服务器时它给我的错误: 无法自动连接服务"AppBundle\Controller\DetectServiceDetailController":方法"__construct()"引用类"Symfony\Component\HttpFoundation\Request"的参数"$ask",但不存在这样的服务。它不能自动注册,因为它来自不同的根命名空

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