2016-03-25 21 views
0

Bir Symfony2 uygulama geliştiriyorum ve böyle bir yapılandırma dosyası kullanabilmek için istiyorum:Symfony2'nin yapılandırma kuvvet dizisi tip

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', 'val2'] 

yüzden aşağıdaki yapılandırma dosyası oluşturduk

Ancak, bu yapılandırma, aşağıdaki gibi bir şey eklememi sağlıyor:

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

Dize türünde olmak için dizi değerlerini zorlamanın bir yolu var mı (ör. prototype('string') gibi bir şey)?

cevap

2

Dize yok. dosyayı https://github.com/symfony/symfony/blob/2.8/src/Symfony/Component/Config/Definition/Builder/NodeBuilder.php#L27

Düğüm eşlemesi kontrol sadece bu değerler

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

Sen Conifguration sınıfında elle kontrol edebilirsiniz bekliyoruz. Daha fazla bilgi için bu bölümün http://symfony.com/doc/current/cookbook/bundles/configuration.html#processing-the-configs-array numaralı telefonuna bakın.