--- layout: post title: "Symfony 2 Configuration – Array of associative arrays" date: 2012-12-20 12:03:23+00:00 tags: [php, symfony] permalink: /blog/2012/12/20/symfony-2-configuration-array-of-associative-arrays published: true author: name: Gergely Polonkai email: gergely@polonkai.eu --- Few days ago I have struggled with a problem using Symfony2 configuration. I wanted to add the following kind of configuration to `config.yml`: {% highlight yaml %} acme_demo: transitions: - { hc_cba: 180 } - { cba_hc: -1 } {% endhighlight %} The problem was that the stuff under `transitions` is dynamic, so those `hc_cba` and `cba_hc` tags can be pretty much anything. After hitting many errors, I came to the solution: {% highlight php %} 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() ; {% endhighlight %}