在Symfony2中,哪里是存储app wide参数的正确位置?

ed2*_*209 4 php parameters symfony

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

  • 特定用户选择的默认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
Run Code Online (Sandbox Code Playgroud)

这些应该在不同的包中以及模板中提供

Ste*_*nte 6

这些应该在不同的包中以及模板中提供

他们是.只要您可以访问容器,就可以访问参数.从您链接到的文档: $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 }
Run Code Online (Sandbox Code Playgroud)

你的app.yml看起来像这样:

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

  app:
    default_layout:  2
Run Code Online (Sandbox Code Playgroud)

这就是你访问数据的方式: $container->getParameter('flickr.callbackUrl');

第三种选择是直接定义参数app/config/config.yml.代码与我的示例完全相同app/config/app.yml.我不建议这样做,因为app/config/config.yml可以填充捆绑配置参数,我认为将自己的应用程序参数保存在单独的文件中会更清晰.但当然,这完全取决于你.