Использование параметров и конфигураций

Использование параметров

Параметры задаются в отдельном файле app/config/parameters.yml (также можно и в app/config/config.yml), назначим параметр site_name:

parameters:
    site_name: "Название сайта"

Далее выведем его в контроллере:

echo $this->container->getParameter('site_name');

 

Использование конфигураций

Создадим бандл AcmeDemoBundle, переходим к созданию дерева конфигураций

Acme/DemoBundel/DependencyInjection/Configuration.php

назначим "site_name" со стандартным значением "Site name"

...
public function getConfigTreeBuilder()
{
    $treeBuilder = new TreeBuilder();
    $rootNode = $treeBuilder->root('acme_demo');
    $rootNode
        ->children()
        ->scalarNode('site_name')->defaultValue('Site name')->end()
        ->end();
    return $treeBuilder;
}
...

теперь зарегистрируем конфигурацию как параметр, для вызова в любом месте кода, перейдем в файл

Acme/DemoBundel/DependencyInjection/AcmeDemoExtension.php

...
public function load(array $configs, ContainerBuilder $container)
{
    $configuration = new Configuration();
    $config = $this->processConfiguration($configuration, $configs);

    // получаем значение site_name и записываем его в параметр acme_demo.site_name (название параметра можно изменить на любой)
    $container->setParameter('acme_demo.site_name', $config['site_name']);

    $loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
    $loader->load('services.yml');
}
...

далее получаем конфиг как обычный параметр

// выведет стандартное значение "Site name"
echo $this->container->getParameter('acme_demo.site_name');

переназначим стандартное значение на свое, для этого перейдем в файл конфигураций app/config/config.yml и добавим следующие строки

acme_demo:
    site_name: "Название сайта"

теперь при выводе параметра получим наше новое значение.