Symfony 在 YAML 配置文件中使用 when@ 和 .env 中的变量

问题描述 投票:0回答:1

我使用的是 symfony 6.1:

我的 .env 中有一个变量 do_something。如果 do_something 设置为 true,我只想在 yaml 配置文件中包含一个部分。

根据symfony文档我可以使用when@仅在特定条件下包含yaml配置中的某些部分。该文档似乎只显示了如何在应用程序环境条件下使用when@,例如当@产品。是否可以将when@与.env中的变量一起使用?

我希望我的 yaml 配置文件看起来像这样

something:
  anotherthing:
    site: &xyz
      type: 'abcd'
      api: 'abcd'
when@%env(bool:do_something)%:
  something:
    anotherthing:
      onlyifdosomething:
        <<: *xyz
php symfony configuration yaml
1个回答
0
投票

如果不通过配置,你无法完全做到这一点。

您很可能可以通过操作应用程序内核上的容器来实现此目的。但坦率地说,我不会推荐它,而且无论如何它看起来都是在错误的方向上解决问题。

如果您的服务对于一种或另一种配置的行为应该有所不同,您应该将环境变量值传递给服务,并让服务处理所需的不同行为。

如果您根据情况需要完全不同的服务实现,那么您需要的是环境,并根据

services_env.yaml
的值加载不同的
APP_ENV
文件。

© www.soinside.com 2019 - 2024. All rights reserved.