Skip to content

Instantly share code, notes, and snippets.

@a-ast
Created December 12, 2016 15:31
Show Gist options
  • Save a-ast/68cabd6013badf43b00c5b93a995f2d1 to your computer and use it in GitHub Desktop.
Save a-ast/68cabd6013badf43b00c5b93a995f2d1 to your computer and use it in GitHub Desktop.
Symfony: use semantic configuration combining yml and xml configuration files
<?xml version="1.0" ?>
<!-- app/config/app.xml -->
<sym:container xmlns:sym="http://symfony.com/schema/dic/services" xmlns="http://example.org/schema/dic/app">
<config>
<some_integer>86</some_integer>
<array_element name="first_from_xml">
<integer_element>3</integer_element>
<text_element>text1 from xml</text_element>
</array_element>
<array_element name="second_from_xml">
<integer_element>4</integer_element>
<text_element>text2 from xml</text_element>
</array_element>
</config>
</sym:container>
# app/config/app.yml
app:
some_integer: 1
some_text: value_from_app
array_elements:
first_from_yml:
integer_element: 1
text_element: text1 from yml
second_from_yml:
integer_element: 2
text_element: text2 from yml
# app/config/config.yml
# Include both semantic configs
imports:
- { resource: app.yml }
- { resource: app.xml }
<?php
// src/AppBundle/DependencyInjection/Configuration.php
namespace AppBundle\DependencyInjection;
use Symfony\Component\Config\Definition\Builder\TreeBuilder;
use Symfony\Component\Config\Definition\ConfigurationInterface;
class Configuration implements ConfigurationInterface
{
/**
* Generates the configuration tree builder.
*
* @return \Symfony\Component\Config\Definition\Builder\TreeBuilder The tree builder
*/
public function getConfigTreeBuilder()
{
$treeBuilder = new TreeBuilder();
$rootNode = $treeBuilder->root('app');
$rootNode
->fixXmlConfig('array_element')
->children()
->arrayNode('array_elements')
->useAttributeAsKey('name')
->prototype('array')
->children()
->integerNode('integer_element')->end()
->scalarNode('text_element')->end()
->end()
->end()
->end()
->integerNode('some_integer')->defaultValue('0')->end()
->scalarNode('some_text')->end()
->end();
return $treeBuilder;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment