在Symfony2中,哪里是存储应用程序范围参数的正确位置


In Symfony2 where is the correct place to store an app wide parameter?

我想存储一些特定于应用程序的值,例如:

  • 特定用户选择的默认Id号,如果尚未设置
  • 各种服务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

这些应该在不同的bundle和模板中可用

这些应该在不同的bundle和模板中可用

。只要可以访问容器,就可以访问参数。从你链接到的文档中:$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可能会被bundle配置参数填满,我认为将自己的应用程序参数保存在单独的文件中会更干净。当然,这一切都取决于你。