Проверка компонента конфигурации Symfony3
Сообщество мне нужна твоя помощь. У меня есть файл конфигурации:
payments:
methods:
paypal:
enabled: false
allowed_countries:
- <country>
- ...
credit_card:
disallowed_countries:
- <country>
- ...
Как я могу проверить использование TreeBuilder, если arrayNode содержит только один из 2 разрешенных массивов: allow_countries или disallowed_countries, и выдать исключение, если есть два массива вместе? Symfony версия 3.2
1 ответ
Вы можете добавить более сложную проверку в построитель дерева конфигурации, используя правила проверки с ExprBuilder.
Это будет выглядеть примерно так:
$rootNode
->isRequired()
->validate()
->ifTrue(function($options) {
return !($options['allowed_countries'] xor $options['disallowed_countries']);
})
->thenInvalid('Either define allowed_countries or disallowed_countries, not both')
->end()
->children()
->arrayNode('allowed_countries')
->scalarPrototype()->end()
->end()
->arrayNode('disallowed_countries')
->scalarPrototype()->end()
->end()
->end();