Конфигурация Symfony использует атрибутAttributeAsKey и индексированный массив

Я хотел бы создать класс конфигурации Symfony, который принимает следующую конфигурацию YAML:

bundle_name:
section:
attributeAsKey:
- entry 1
- entry 2

Это тогда привело бы к массиву так:

array(
'section' => array(
'attributeAsKey' => array(
'entry1',
'entry2'
)
)
)

Я пробовал следующее, но это не работает. Что я делаю неправильно?

->arrayNode('section')
->useAttributeAsKey('attributeAsKey')
->prototype('array')
->children()
->arrayNode('entries')
->prototype('scalar')->end()
->end()
->end()
->end()
->end()

1

Решение

Это то, чем я занимаюсь …

            ->arrayNode('formats')
->useAttributeAsKey('format', true)
->prototype('array')
->beforeNormalization()
->ifTrue(function ($v) { return is_array($v) && !isset($v['mimeTypes']); })
->then(function ($v) { return array('mimeTypes' => $v); })
->end()
->children()
->arrayNode('mimeTypes')
->prototype('scalar')->end()
->end()
->end()
->end()
->end()

Возвращаемый массив имеет ключ ‘mimeTypes’, но позволяет мне определить конфигурацию следующим образом:

formats:
json:
- application/json
- application/x-json
- application/vnd.lemon+json

А также с помощью ключа «mimeTypes».

0

Другие решения

Других решений пока нет …