私はSymfony2のツリービルダーを使用しています。これには、ここで説明されているいくつかの基本的な検証ルールがあります:http ://symfony.com/doc/current/components/config/definition.html#validation-rules
正規表現でも検証する方法はありますか?
これが現在のやり方ですが、これが「ベストプラクティス」であるかどうかはわかりません。検証したい設定項目はですroot_node
。
config.yml
my_bundle:
root_node: /some/path # this one is valid
Configuration.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()
または、それが失敗した場合、検証ルールを適用するための最良のアプローチ。