* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace FOS\JsRoutingBundle\DependencyInjection; use Symfony\Component\Config\Definition\ConfigurationInterface; use Symfony\Component\Config\Definition\Builder\TreeBuilder; /** * Configuration class. * * @author William DURAND */ class Configuration implements ConfigurationInterface { /** * Generates the configuration tree builder. * * @return \Symfony\Component\Config\Definition\Builder\TreeBuilder The tree builder */ public function getConfigTreeBuilder() { $builder = new TreeBuilder('fos_js_routing'); if (\method_exists($builder, 'getRootNode')) { $rootNode = $builder->getRootNode(); } else { // BC layer for symfony/config 4.1 and older $rootNode = $builder->root('fos_js_routing'); } $rootNode ->children() ->scalarNode('serializer')->cannotBeEmpty()->end() ->arrayNode('routes_to_expose') ->beforeNormalization() ->ifTrue(function ($v) { return !is_array($v); }) ->then(function ($v) { return array($v); }) ->end() ->prototype('scalar')->end() ->end() ->scalarNode('router')->defaultValue('router')->end() ->scalarNode('request_context_base_url')->defaultNull()->end() ->arrayNode('cache_control') ->children() ->booleanNode('public')->defaultFalse()->end() ->scalarNode('expires')->defaultNull()->end() ->scalarNode('maxage')->defaultNull()->end() ->scalarNode('smaxage')->defaultNull()->end() ->arrayNode('vary') ->beforeNormalization() ->ifTrue(function ($v) { return !is_array($v); }) ->then(function ($v) { return array($v); }) ->end() ->prototype('scalar')->end() ->end() ->end() ->end() ->end(); return $builder; } }