首页 > 解决方案 > 如何在 Symfony 服务中注入一组参数?

问题描述

我正在尝试注入一些树枝视图作为自定义邮件服务的模板,该服务将用作另一个服务的依赖项。

我不明白为什么,但就像 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 服务构造函数:

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”:方法“__construct()”的参数“$parameters”> 是类型提示的“数组”,您应该显式配置 > 它的值。

标签: phpsymfonysymfony4

解决方案


您是否已经在 services.yml 中进行了配置?

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


推荐阅读