2016-03-25 3 views
0

Я разрабатываю приложение Symfony2, и я хочу, чтобы иметь возможность использовать конфигурационный файл, как это: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'))?

ответ

2

Нет нитки. Проверьте файл https://github.com/symfony/symfony/blob/2.8/src/Symfony/Component/Config/Definition/Builder/NodeBuilder.php#L27

отображение Node просто ожидать, что эти значения

$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.

Смежные вопросы