Symfony - получить настраиваемый параметр в контроллере пакета

Я запустил веб-сайт под Symfony 3.4.12 и создал свой собственный пакет. У меня есть собственный файл конфигурации на Yaml:

# src/CompanyBundle//Resources/config/config.yml

company_bundle:
    phone_number

... и запускается он так:

<?php

# src/CompanyBundle/DependencyInjection/CompanyExtension.php 

namespace CompanyBundle\DependencyInjection;

use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\Config\FileLocator;
use Symfony\Component\HttpKernel\DependencyInjection\Extension;
use Symfony\Component\DependencyInjection\Loader;


class CompanyExtension extends Extension
{
    /**
     * {@inheritDoc}
     */
    public function load(array $configs, ContainerBuilder $container)
    {
        $loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
        $loader->load('config.yml');
    }
}

?>

Я хотел бы получить свои пользовательские параметры в моем файле контроллера, как лучше всего это сделать? Я пробовал этот способ, но безуспешно:

$this->getParameter('company_bundle.phone_number')

Спасибо.

Прочтите еще немного о нестандартная конфигурация. Вам понадобится дерево конфигурации, а затем используйте $ container-> setParameter для создания параметров. Или просто определите свой phone_number как параметр для начала. Точно так же, как говорится в ответе ниже, хотя я опередил его сообщение примерно на 4 секунды.

Cerad 18.07.2018 16:33
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Symfony Station Communiqué - 17 февраля 2023 г
Symfony Station Communiqué - 17 февраля 2023 г
Это коммюнике первоначально появилось на Symfony Station , вашем источнике передовых новостей Symfony, PHP и кибербезопасности.
Управление ответами api для исключений на Symfony с помощью KernelEvents
Управление ответами api для исключений на Symfony с помощью KernelEvents
Много раз при создании api нам нужно возвращать клиентам разные ответы в зависимости от возникшего исключения.
0
1
716
1

Ответы 1

Вы должны определить свой собственный DependencyInjection/Configuration.php: http://symfony.com/doc/3.4/bundles/configuration.html#processing-the-configs-array

Как это:

public function getConfigTreeBuilder()
{
    $treeBuilder = new TreeBuilder();
    $rootNode = $treeBuilder->root('company_bundle');
    $rootNode
        ->children()
            ->scalarNode('phone_number')
            ->end()
        ->end()
    ;
}

А затем преобразовать его в файл DependencyInjection/...Extension.php. Если вы хотите сделать эту опцию параметром, вы должны сделать это так:

public function load(array $configs, ContainerBuilder $container) 
{
     // Some default code
    $container->setParameter('company_bundle.phone_number', $config['phone_number']);
}

И затем вы можете получить этот параметр в своем контроллере, как и вы.

Это слишком сложно, чтобы делать то, что я думаю. Более того, если мне нужно устанавливать все параметры один за другим, это бесполезно. Идея заключалась в том, чтобы добавлять / редактировать / удалять переменные в файле yaml без редактирования какого-либо файла php. В любом случае большое спасибо.

Paolito75 19.07.2018 10:01

@ Paolito75 Я полагаю, вы можете сделать это в вашем config.yml внутри раздела parameters. Но я не уверен, что это сработает

Nikita Leshchev 19.07.2018 10:09

Другие вопросы по теме