【问题标题】:Symfony: Use a value within a parameter array as a service parameterSymfony:使用参数数组中的值作为服务参数
【发布时间】:2021-11-12 13:48:07
【问题描述】:

Symfony 3.4

我有一个看起来像这样的参数:

parameters.yml:

paramters:
    some_configuration:
        param1: value1
        param2: value2

我想将 some_configuration 参数中的值直接传递给服务,而不是 some_configuration 本身。像这样的:

services.yml:

services:
    AppBundle\Service\MyService:
        arguments:
            $serviceparam: '%some_configuration.param2%'

这有可能吗?

【问题讨论】:

    标签: symfony symfony-3.4 symfony-dependency-injection


    【解决方案1】:

    Symfony 2.7.3 以上

    在我见过的所有 Symfony 配置文件中,“参数:”下的条目始终是完全限定的。
    我不完全明白为什么会这样,但它可以帮助你在你的parameters.yml 中写下这样的条目:

    parameters.yml:

    parameters:
        some_configuration.param1: value1
        some_configuration.param2: value2
    

    要在service.yaml 中使用参数数组值,您可以将其用作普通参数(就像您写的一样!):

    service.yaml

    services:
        AppBundle\Service\MyService:
            arguments:
                $serviceparam: '%some_configuration.param2%'
    

    在 symfony 2.7.3 中:

    可以通过以下方式完成:

    services:
        AppBundle\Service\MyService:
            arguments:
                $serviceparam: ["@=container.getParameter('some_configuration')['param1']"]
    

    It works for symfony 2.7.3
    有关表达式语言的更多信息,请参阅symfony doc

    【讨论】:

      【解决方案2】:
      services:
          AppBundle\Service\MyService:
              arguments:
                  $serviceparam: '@=parameter("some_configuration")["param2"]'
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-04-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多