我正在使用 Symfony2 的树构建器,我看到它有一些基本的验证规则,如下所述:http: //symfony.com/doc/current/components/config/definition.html#validation-rules
有没有办法也通过正则表达式进行验证?
这是我目前的做法,但我不确定这是否是“最佳实践”。我要验证的配置项是root_node
.
配置.yml
my_bundle:
root_node: /some/path # this one is valid
配置.php
$treeBuilder = new TreeBuilder();
$rootNode = $treeBuilder->root('my_bundle');
$rootNode
->children()
->scalarNode('root_node')
->end()
->end()
->end();
return $treeBuilder;
MyBundleExtension.php
$nodePattern = '#/\w+(/w+)*#';
if (! preg_match($nodePattern, $config['root_node'])) {
throw new \Exception("root_node is not valid: must match the pattern: $nodePattern");
}
所以,我真正追求的是 TreeBuilder 方法:
->validate()->ifNotMatchesRegex()->thenInvalid()
或者,如果做不到这一点,则执行我的验证规则的最佳方法。