gergelypolonkai-web-jekyll/_posts/2012-12-20-symfony-2-configuration-array-of-associative-arrays.markdown

1.6 KiB
Raw Blame History

layout title date tags permalink published author
post Symfony 2 Configuration Array of associative arrays 2012-12-20 12:03:23+00:00
php
symfony
/blog/2012/12/20/symfony-2-configuration-array-of-associative-arrays true
name email
Gergely Polonkai 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 %}