2012-12-17 37 views
2

我要處理的以下配置:Symfony的2 - 配置值:關聯數組的數組

acme_demo: 
    transitions: 
     - { hc_cba: 180 } 
     - { cba_hc: -1 } 

清楚的是,我將需要添加一個arrayNode,像

$rootNode 
    ->children() 
     ->arrayNode('transitions') 
      ->beforeNormalization() 
       ->ifArray() 
        ->then(function($values) { 
         return array('transition' => $values); 
        }) 
       ->end() 
      ->end() 
     ->end() 
    ->end() 
; 

但這給我一個InvalidConfigurationException與消息

Unrecognized options "transitions" under "acme_demo.state_machine" 

我應該如何處理這些「內部」價值ES?

回答

3

試圖開車帶我去溶液剛寫下的問題後,小時後的大量的應力:

$rootNode 
     ->children() 
      ->arrayNode('state_machine') 
       ->requiresAtLeastOneElement() 
       ->beforeNormalization() 
        ->ifArray() 
         ->then(function($values) { 
          $ret = array(); 

          foreach ($values as $value) { 
           foreach ($value as $transition => $time) { 
            $ret[] = array('transition' => $transition, 'time' => e); 
           } 
          } 

          return $ret; 
         }) 
        ->end() 
        ->prototype('array') 
        ->children() 
         ->scalarNode('transition')->end() 
         ->scalarNode('time')->end() 
        ->end() 
       ->end() 
      ->end() 
     ->end() 
    ;