2016-08-10 4 views
1

Это может быть глупым вопрос, но я не могу видеть, как получить доступ к этой информации:Symfony: Как получить доступ к конфигурации контроллера

В основном приложение/Config/config.yml, я имею общую конфигурацию данные для моего приложения.

parameters: #accessible by getParameter() 
    locale: fr 
    # ... 
fos_user: #accessible by ??? 
    #... 
    registration: 
     form: 
      from_email: 
       address:  [email protected] 
       sender_name: TheSenderName 

В моем пользовательском расслоении я могу получить доступ к параметрам из этого config.yml файла с:

$this->container->getParameter('locale'); //gives me "fr" as expected 

Но как я могу получить доступ к не являющиеся значения конфигурации параметров?

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

$admin_adress = $this->container->getParameter('fos_user.registration.confirmation.from_email.address'); 

Что такое правильный способ доступа thoses?

Редактировать: Да, я хотел получить доступ к этим конфигурационным данным из FOS User Bundle (здесь, в примере, но может быть любым), внутри контроллера или любого другого в моем пакете.

+0

Вы требуете это для Bundle вы сделали? –

+1

Да. Глупый вопрос. Ну не совсем. Доступ к параметрам можно получить непосредственно через getParameter. Обычные элементы конфигурации не будут доступны, если сам комплект не сделает их доступными. Лучше всего было бы определить from_email как параметр. Или, может быть, копайте в связку и посмотрите, где они где-то выставлены. – Cerad

+0

не мог ли он установить их в качестве параметров, используя конфигурацию комплекта и класс расширения? –

ответ

0

Вы можете действовать таким образом

parameters: 
    locale: fr 
    fos_user: 
     registration: 
      form: 
       from_email: 
        address: [email protected] 
    # ... 
fos_user: 
    #... 
    registration: 
     form: 
      from_email: 
       address:  %fos_user.registration.form.from_email.address% 
       sender_name: TheSenderName 

Конечно, я выбрал это имя, чтобы соответствовать вашему контроллеру req uest для параметра: вы можете (и, возможно, должны) выбрать другие ключи.

Однако с container->getParameter вы можете получить доступ к толькоparameters раздела файла конфигурация (плюс параметры подвергаются от поставщиков)

0

Одним из решений может быть прохождение контроллер в качестве службы, а затем вводят свои параметры так:

# services.yml 
my.amazing.controller: 
    class: CompanyFirst\LabBundle\Controller\PloufController 
    arguments: 
     - '@filesystem' 
     - '%dump_file_convention%' // your config parameter 
1

Я думаю this question пригвоздил

class MyProjectExtension extends Extension 
{ 
    public function load(array $configs, ContainerBuilder $container) 
    { 
     // The next 2 lines are pretty common to all Extension templates. 
     $configuration = new Configuration(); 
     $processedConfig = $this->processConfiguration($configuration, $configs); 

     // This is the KEY TO YOUR ANSWER 
     $container->setParameter('from_email.address', $processedConfig[ 'registration.confirmation.from_email.address' ]; 

     // Other stuff like loading services.yml 
    } 
Смежные вопросы