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中不能像上面那样深入到一个级别