我使用的是 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
如果不通过配置,你无法完全做到这一点。
您很可能可以通过操作应用程序内核上的容器来实现此目的。但坦率地说,我不会推荐它,而且无论如何它看起来都是在错误的方向上解决问题。
如果您的服务对于一种或另一种配置的行为应该有所不同,您应该将环境变量值传递给服务,并让服务处理所需的不同行为。
如果您根据情况需要完全不同的服务实现,那么您需要的是环境,并根据
services_env.yaml
的值加载不同的APP_ENV
文件。