我在一个独立的PHP应用程序上使用Config component,我希望在我的配置文件中有一个类似于下面的结构:
sites:
site1:
ftp:
server: myserver
name: name
...: ...
database:
server: myserver
name: ....
AFAIS,我需要在我的数组上使用useAttributeAsKey()方法来获取" site1"节点(" sites"节点可以处理多个站点,名称为key)。
我尝试以这种方式设置它,但我最终得到了一个不在NodeDefinition"中的" children方法。如何正确设置?
$rootNode
->children()
->scalarNode(self::REMANENCE_NODE[self::NODE_NAME])
->defaultValue(self::REMANENCE_NODE[self::NODE_DEFAULT_VALUE])
->info('Contains the backup folders max value to keep on defined storages')
->end()
->arrayNode(self::SITES)
->requiresAtLeastOneElement()
->useAttributeAsKey('name')
->prototype('array')
->children()
->arrayNode(self::DATABASE)
->end()
->arrayNode(self::FILES)
->end()
->end()
->end()
感谢您的回复, 尼古拉斯
答案 0 :(得分:0)
我终于找到了良好的配置:
$rootNode
->children()
->scalarNode(self::REMANENCE_NODE[self::NODE_NAME])
->defaultValue(self::REMANENCE_NODE[self::NODE_DEFAULT_VALUE])
->info('Contains the backup folders max value to keep on defined storages')
->end()
->arrayNode(self::SITES)
->requiresAtLeastOneElement()
->prototype('array')
->children()
->arrayNode(self::DATABASE)
->children()
->scalarNode(self::DATABASE_SERVER[self::NODE_NAME])
->defaultValue(self::DATABASE_SERVER[self::NODE_DEFAULT_VALUE])
->info('Contains the database server IP or name')
->end()
以上内容适用于以下配置:
configuration:
remanence: 5
sites:
site_1: # this is the attribute as key
database:
server: localhost
... : ...
要注意的两件事:
This SO post向我展示了正确的方式,这也是official documentation
的建议干杯,
尼古拉斯