Как прочитать параметры конфигурации из конфигурации Symfony2.в формате YML?



я добавил параметр в мою конфигурацию.файл yml как таковой:



app.config:
contact_email: [email protected]
...


для жизни меня, я не могу понять, как прочитать его в переменную. Я попробовал что-то вроде этого в одном из моих контроллеров:



$recipient =
$this->container->getParameter('contact_email');


, но я получаю сообщение об ошибке, говорящее:




параметр "contact_email" должен быть
определенный.




я очистил свой кэш, я также искал везде на Symfony2 перезагрузил документацию сайта, но я не могу узнать, как это сделать сделать это.



наверное, просто слишком устал, чтобы понять это сейчас. Кто-нибудь может помочь с этим?

611   6  

6 ответов:

вместо определения contact_email внутри app.config, определить его в parameters запись:

parameters:
    contact_email: [email protected]

вы должны найти вызов, который вы делаете в вашем контроллере теперь работает.

в то время как решение о переезде в contact_email до parameters.yml легко, как предлагается в других ответах, которые могут легко загромождать ваш файл параметров, если вы имеете дело со многими пакетами или если вы имеете дело с вложенными блоками конфигурации.

  • во-первых, я отвечу строго на вопрос.
  • позже я дам подход для получения этих конфигураций из служб, никогда не проходя через общее пространство в качестве параметров.

ПЕРВЫЙ ПОДХОД: Разделенный блок конфигурации, получая его в качестве параметра

с пристройкой (подробнее о расширениях здесь) вы можете держать это легко "разделены" на различные блоки в config.yml а затем введите это в качестве параметра gettable от контроллера.

внутри вашего класса расширения внутри

Я должен добавить к ответу Дугласа, вы можете получить доступ к глобальной конфигурации, но symfony переводит некоторые параметры, например:

# config.yml
... 
framework:
    session:
        domain: 'localhost'
...

are

$this->container->parameters['session.storage.options']['domain'];

Вы можете использовать var_dump для поиска заданного ключа или значения.

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

вот ссылка: как выставить семантическую конфигурацию для пакета

Как это было сказано ранее - вы можете получить доступ к любым параметрам с помощью контейнера для инъекций и использовать его свойство parameter.

"Symfony-работа с определениями контейнерных сервисов" хорошая статья об этом.

я узнал простой способ из примера кода http://tutorial.symblog.co.uk/

1) Обратите внимание на ZendeskBlueFormBundle и расположение файла

# myproject/app/config/config.yml

imports:
    - { resource: parameters.yml }
    - { resource: security.yml }
    - { resource: @ZendeskBlueFormBundle/Resources/config/config.yml }

framework:

2) Обратите внимание на Zendesk_BlueForm.электронная почта.contact_email и расположение файла

# myproject/src/Zendesk/BlueFormBundle/Resources/config/config.yml

parameters:
    # Zendesk contact email address
    Zendesk_BlueForm.emails.contact_email: [email protected]

3) Обратите внимание, как я получаю его в $client и расположение файла контроллера

# myproject/src/Zendesk/BlueFormBundle/Controller/PageController.php

    public function blueFormAction($name, $arg1, $arg2, $arg3, Request $request)
    {
    $client = new ZendeskAPI($this->container->getParameter("Zendesk_BlueForm.emails.contact_email"));
    ...
    }

Comments

    Ничего не найдено.