Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在Symfony2中,哪里是存储应用程序范围参数的正确位置?_Php_Parameters_Symfony - Fatal编程技术网

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

Php 在Symfony2中,哪里是存储应用程序范围参数的正确位置?,php,parameters,symfony,Php,Parameters,Symfony,我想存储一些特定于应用程序的值,例如: 特定用户选择的默认Id号(如果尚未设置) 各种服务API(如facebook或flickr)的密钥/令牌/秘密 到目前为止,我发现最接近的是 如果我使用app/config/parameters.ini它看起来像: [flickr] callbackUrl = http://example.com/approve requestTokenUrl = http://www.flickr.com/services/oauth/request

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

  • 特定用户选择的默认Id号(如果尚未设置)
  • 各种服务API(如facebook或flickr)的密钥/令牌/秘密
到目前为止,我发现最接近的是

如果我使用
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
这些应该在不同的捆绑包和模板中提供

这些应该在不同的捆绑包和模板中提供

是的。只要可以访问容器,就可以访问参数。从您链接到的文档中:
$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 }
parameters:
  flickr:
    callbackUrl:     http://example.com/approve
    requestTokenUrl: http://www.flickr.com/services/oauth/request_token
    consumerKey:     123a1237a29b123a5541232e0279123

  app:
    default_layout:  2
您的app.yml将如下所示:

imports:
    - { resource: 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配置参数填满,而且我认为将自己的应用参数保存在单独的文件中会更干净。当然,这完全取决于你。

我喜欢你的第二种方法,但我无法让它工作。$container->getParameter()在任何控制器中都可用吗?应该是$this->container?另外,default_layout=2应该是default_layout:2吗?@ed209:应该是的,这是yml。我认为在控制器中,您可以这样做:
$this->getContainer()
来获取容器。@gregwire$this->getContainer()不起作用。有效的方法是使用$this->container->getParameter('default_layout'),其中默认的_布局位于parameters.ini中,但我更愿意使用.ymlmethod@Arms如果使用getParameter()方法,我认为在app.yml中不能像上面那样深入到一个级别