Pergunta

I build config for my bundle using ConfigurationInterface. My extension file look like this:

public function load(array $configs, ContainerBuilder $container) {
    $configuration = new Configuration();
    $config = $this->processConfiguration($configuration, $configs);
    $container->setParameter('my_admin_included_bundles', $config['included_bundles_namespace']);
    $container->setParameter('my_admin_widget_script_file', $config['widget_script_file']);
    $container->setParameter('my_admin_widgets', $config['widgets']);
    $container->setParameter('my_admin_menu', $config['menu']); 
}

public function getAlias() {
    return 'my_admin';
}

I test it out by putting my config params into (global) app/config.yml, and it work's. But i want to putt those parameters in to custom file like MyBundle\Resources\Config\my_config.yml and merge this file with global. Any sugestions?

Foi útil?

Solução 2

OK. I found a temporary solution to the problem. It looks like this

use Symfony\Component\Yaml\Parser;    

public function load(array $configs, ContainerBuilder $container) {       
            $yaml = new Parser();
            $configs = $yaml->parse(file_get_contents(__DIR__ . '/../Resources/config/config.yml'));

            $configuration = new Configuration();
            $config = $this->processConfiguration($configuration, $configs);
            $container->setParameter('my_cms_widget_script_file', $config['widget_script_file']);
            $container->setParameter('my_cms_layout_list', $config['layout_list']);
            $container->setParameter('my_cms_default_layout', $config['default_layout']);
            $container->setParameter('my_cms_widgets', $config['widgets']);
            $container->setParameter('my_cms_menu', $config['menu']);
        }

I take my custom config.yml, parse file to array, then add as parameter to the container. Any sugestions?

Outras dicas

In your app/config/config.yml file, you can import other configuration files (even with other formats):

# app/config/config.yml
import:
    - { resource: path/to/my_config.yml }

However, it's better (it makes your bundle more reusable) if you use prepended configuration. With that, you can set the default values for other bundle's configuration. This way, a User can still override it when they want that.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top