0

我正在开发一个 Symfony2 应用程序,我希望能够使用这样的配置文件:

my_config:
    values: ['val1', 'val2']

所以我创建了以下配置文件:

class Configuration implements ConfigurationInterface {
    public function getConfigTreeBuilder() {
        $treeBuilder = new TreeBuilder();
        $rootNode = $treeBuilder->root('my_config');

        $rootNode
            ->children()
                ->arrayNode('values')
                    ->prototype('scalar')->end()
                ->end()
            ->end()
        ;

        return $treeBuilder;
    }
}

但是,此配置让我添加如下内容:

my_config:
    values: ['val1', 123, false]

有没有办法强制数组值是字符串类型(例如类似的东西prototype('string'))?

4

1 回答 1

2

没有字符串。检查文件https://github.com/symfony/symfony/blob/2.8/src/Symfony/Component/Config/Definition/Builder/NodeBuilder.php#L27

节点映射只期望这些值

$this->nodeMapping = array(
    'variable' => __NAMESPACE__.'\\VariableNodeDefinition',
    'scalar' => __NAMESPACE__.'\\ScalarNodeDefinition',
    'boolean' => __NAMESPACE__.'\\BooleanNodeDefinition',
    'integer' => __NAMESPACE__.'\\IntegerNodeDefinition',
    'float' => __NAMESPACE__.'\\FloatNodeDefinition',
    'array' => __NAMESPACE__.'\\ArrayNodeDefinition',
    'enum' => __NAMESPACE__.'\\EnumNodeDefinition',
);

您可以在配置类中手动检查。查看http://symfony.com/doc/current/cookbook/bundles/configuration.html#processing-the-configs-array本节了解更多信息。

于 2016-03-25T10:20:59.810 回答