Symfony2配置强制数组类型

时间:2016-03-25 10:14:28

标签: php symfony symfony-2.8

我正在开发一个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]

有没有办法强制数组值为String类型(例如prototype('string'))?

1 个答案:

答案 0 :(得分: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',
);

您可以在Conifguration类中手动检查。 请查看http://symfony.com/doc/current/cookbook/bundles/configuration.html#processing-the-configs-array此部分以获取更多信息。