¿Cómo definir la configuración dinámica usando el TreeBuilder?
Quiero configurar un paquete para permitir diferentes comportamientos para diferentes empresas. La estructura de configuración dentro de ellos será la misma.
Miconfig.yml
se verá así:
bunde_namespace:
company:
company_1:
foo: bar
baz: poit
company_2:
foo: bar
baz: poit
company_3:
...
Cuando accedo al$config
Espero que la matriz se vea así:
$config['company'] = [
'company_one' => [
'foo' => 'bar'
'baz' => 'poit'
],
'company_two' => [
'foo' => 'bar'
'baz' => 'poit'
],
...
];
Sin embargo, no tengo experiencia con TreeBuilder yconfigurar la configuración como se describe en los documentos y todavía me elude sobre cómo configuro mi configuración para que trate a los hijos decompany
como matrices con clave.
Lo que he logrado hasta ahora es configurar la configuración para una compañía, así:
class Configuration implements ConfigurationInterface
{
/**
* {@inheritdoc}
*/
public function getConfigTreeBuilder()
{
$treeBuilder = new TreeBuilder();
$rootNode = $treeBuilder->root('dreamlines_booking_service_fibos');
$rootNode
->children()
->arrayNode('company')
->children()
->scalarNode('foo')->end()
->scalarNode('baz')->end()
->end()
->end()
->end();
return $treeBuilder;
}
}
Y el simplificadoconfig.yml
se vería así:
bundle_namespace:
company:
foo: bar
baz: poit
Sin embargo, esto no es lo que quiero.
Asumo que necesito usaruseAttributeAsKey
Sin embargo, tengo problemas para que funcione.
Esto falla:
$rootNode
->children()
->arrayNode('company')
->prototype('array')
->useAttributeAsKey('name')
->children()
->scalarNode('foo')->end()
->scalarNode('baz')->end()
->end()
->end()
->end()
->end();
declarando:
[Symfony \ Component \ Config \ Definition \ Exception \ InvalidDefinitionException] -> useAttributeAsKey () no es aplicable a nodos concretos en la ruta "bundle_namespace".
¿A dónde me estoy yendo mal?