Где в Symfony2 правильное место для хранения параметров приложения? - PullRequest
4 голосов
/ 22 октября 2011

Я хотел бы сохранить несколько значений, специфичных для приложения, например:

  • Идентификационный номер по умолчанию для определенного пользователя, если он еще не установлен
  • ключи / токены / секреты для API различных сервисов, таких как facebook или flickr

Ближайшее, что я нашел, это http://symfony.com/doc/2.0/cookbook/bundles/best_practices.html#configuration

Если бы я использовал app/config/parameters.ini, это выглядело бы как:

[flickr]
    callbackUrl = http://example.com/approve
    requestTokenUrl = http://www.flickr.com/services/oauth/request_token
    consumerKey = 123a1237a29b123a5541232e0279123

[app]
    default_layout = 2

они должны быть доступны в разных пакетах, а также в шаблонах

1 Ответ

6 голосов
/ 23 октября 2011

они должны быть доступны в разных пакетах, а также в шаблонах

Они есть.Пока вы можете получить доступ к контейнеру, вы можете получить доступ к параметрам.Из документов, на которые вы ссылались: $container->getParameter('acme_hello.email.from');

Я думаю, что в вашем примере parameters.ini есть ошибка.'flickr' и 'app' не должны быть заключены в квадратные скобки.Кроме того, первый элемент parameters.ini должен быть [parameters].

Лично мне нравится использовать файл app.yml, потому что я привык использовать его в проектах Symfony 1.x (и потому что я нене вижу причины для использования файла .ini.)Вы можете создать app/config/app.yml и импортировать его в файл app/config/config.yml следующим образом:

imports:
    - { resource: app.yml }

Ваш app.yml будет выглядеть так:

parameters:
  flickr:
    callbackUrl:     http://example.com/approve
    requestTokenUrl: http://www.flickr.com/services/oauth/request_token
    consumerKey:     123a1237a29b123a5541232e0279123

  app:
    default_layout:  2

И вот как выбудет иметь доступ к данным: $container->getParameter('flickr.callbackUrl');

Третий вариант - определить ваши параметры непосредственно в app/config/config.yml.Код будет точно таким же, как мой пример для app/config/app.yml.Однако я не рекомендую делать это, потому что app/config/config.yml может быть достаточно заполнен параметрами конфигурации пакета, и я думаю, что было бы лучше хранить параметры вашего приложения в отдельном файле.Но, конечно, все зависит от вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...