Symfony3 配置组件验证
Posted
技术标签:
【中文标题】Symfony3 配置组件验证【英文标题】:Symfony3 configuration component validation 【发布时间】:2019-01-05 14:12:20 【问题描述】:社区 我需要你的帮助。我有配置文件:
payments:
methods:
paypal:
enabled: false
allowed_countries:
- <country>
- ...
credit_card:
disallowed_countries:
- <country>
- ...
如果 arrayNode 仅包含 2 个允许的数组之一,我如何使用 TreeBuilder 进行验证:allowed_countries 或 disallowed_countries 如果有两个数组一起抛出异常? Symfony 3.2 版
【问题讨论】:
请出示您的 ConifgTreeBuilder 【参考方案1】:您可以使用 validation rules 和 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();
【讨论】:
以上是关于Symfony3 配置组件验证的主要内容,如果未能解决你的问题,请参考以下文章
Symfony3 + Select2 AJAX - 禁用选择验证
从 Symfony3 中经过身份验证的用户 (HWIOAuth) 获取 Angular2 中的 JWT 令牌
Symfony3 表单组件试图将 null 传递给 PHP 7 中的类型提示方法