例如,在我包的Configuration
中,我定义了以下内容:
$treeBuilder = new TreeBuilder('foo');
$treeBuilder
->getRootNode()
->children()
->arrayNode('foobar')
->scalarPrototype()->end()
->defaultValue([])
->end()
->end()
;
i。例如,捆绑销售商品需要foo.foobar
中的值数组。现在,对于我的捆绑软件而言,这些值取决于运行应用程序的环境。因此,通过环境变量提供此配置值将是有意义的。可以处理环境变量的Since Symfony 3.4值。因此,可以将该数组存储为JSON编码并存储在环境变量中,然后通过%env(json:FOO)%
对其进行解码。因此,不必写
foo:
foobar:
- Lorem
- Ipsum
- Dolor
一个人可以使用
foo:
foobar: '%env(json:FOO)%'
where
FOO=["Lorem","Ipsum","Dolor"]
但是,当尝试这样做时,Symfony抛出以下异常:
A dynamic value is not compatible with a "Symfony\Component\Config\Definition\PrototypedArrayNode" node type at path "foo.foobar".
为数组节点允许这种动态值的正确方法是什么?例如,我需要在配置树中实现自己的规范化吗?
您需要在.env文件中将JSON定义为string
这是正确的:FOO='["Lorem","Ipsum","Dolor"]'