我想实现如下的配置结构:
app:
integrations:
some: true
random: true
options: true
user_can_make_these_up: true
我已经添加了一些默认值:
mykey: true
和myotherkey: false
所以在这种情况下编译的配置应该是:
[
mykey => true,
myotherkey => false,
some => true,
random => true,
options => true,
user_can_make_these_up => true,
]
我尝试了以下方法:
$rootNode
->children()
->arrayNode('integrations')
->ignoreExtraKeys()
->addDefaultsIfNotSet()
->children()
->booleanNode('mykey')->defaultTrue()->end()
->end()
->end()
->end();
但是随后我收到错误““app”下无法识别的选项“mykey”。可用选项是“集成”。”
我做错了什么?
根据错误消息,您已经定义了以下配置(在项目中的某个位置):
app:
mykey: false
错误消息
Unrecognized option "mykey" under "app"
只能在上述配置中出现。您正在使用 mykey
正下方的选项 app
,该选项不可用。仅可用(直接在app
下)是integrations
它应该看起来像这样:
app:
integrations:
mykey: false
例如。提供的“配置”(在您的问题和此线程中)与您在项目中使用的不同。
MIND:请记住,只要您有多个具有相同键的
.yaml
配置,您就可以覆盖以前的配置。因此,每当最后加载后一个 .yaml
文件时,以下示例 可能 会导致相同的错误:
> /config/packages/services.yaml
app:
integrations:
mykey: false
> /config/packages/test.yaml
app:
myKey: false