¿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?

Respuestas a la pregunta(1)

Su respuesta a la pregunta