Давайте предположим следующий пример конфигурации:
people:
alice:
type: employee
nick: SuperAlice
department: accounting
bob:
type: guest
nick: HappyBob
Конфигурация semanti c будет выглядеть примерно так:
->arrayNode('people')
->arrayPrototype()
->children()
->scalarNode('type')->isRequired()->end()
->scalarNode('nick')->defaultNull()->end()
->scalarNode('department')->end() // should be req. for type=employee only
->end()
->end
->end()
Сотрудник должен быть условно на основе введите
Как мне подойти? Кроме того, поле department
не должно быть действительным для других типов для улучшения возможности обнаружения.
Эта проблема становится еще больше, когда вы конфигурируете очень разные блоки (например, представьте себе, что конфигурируете серверные базы данных, где большинство полей отличаются между типами). Я посмотрел на monolog-bundle , но он не предлагает никакой подсказки.