я использую Компонент конфигурации в автономном приложении PHP, и я хотел бы иметь в моем файле конфигурации структуру, подобную приведенной ниже:
sites:
site1:
ftp:
server: myserver
name: name
...: ...
database:
server: myserver
name: ....
AFAIS, мне нужен метод useAttributeAsKey () в моем массиве для узла «site1» (узел «sites» может обрабатывать несколько сайтов с именем в качестве ключа).
Я попытался настроить его таким образом, но в итоге я получил «метод детей не в NodeDefinition». Как правильно его настроить?
$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()
Спасибо за ваши ответы,
никола
Я наконец нашел хорошую конфигурацию:
$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
... : ...
2 вещи, на которые стоит обратить внимание:
Этот ТАК пост показал мне правильный путь, который также предлагает официальная документация
Ура,
никола
Других решений пока нет …