【问题标题】:How to access a Symfony 2 bundle configuration from outside the bundle?如何从捆绑包外部访问 Symfony 2 捆绑包配置?
【发布时间】:2013-09-10 12:44:31
【问题描述】:

,不要链接到How to expose a Semantic Configuration for a Bundle

事实上,我已经有了一个完整的包,有很多配置选项。捆绑包实际上是在 app/config.yml 配置的,在它自己的部分。我已经用它的 TreeBuilder 实现了一个 ConfigurationInterface,等等。而且我能够成功地将配置注入包中并在包代码中使用它。

然而,我想做的事情非常简单,但即使我有一个 fully working bundle 已发布并可以使用 Composer 安装,我只玩了几个星期的 Symfony 2,答案可能确实很荒谬简单...但我不知道!

如何从我的应用控制器访问捆绑配置?

例如...这是app/config.yml 的配置(其中“设备”具有数组原型):

my_bundle:
    format: standard
    devices:
        main:
            color: yellow
            capacity: 200

如何使用捆绑包从应用的控制器访问这些值?

【问题讨论】:

  • 我考虑过从包中公开配置...但是如果我不是包作者怎么办? (另外,我真的不想仅仅为了实现这一点而更改捆绑代码。)
  • 我只想读取配置值。
  • 这取决于你如何实现bundle的配置构建器——它在它的参数前面加上一个特定的前缀。在您的情况下,它可能类似于my_bundle.devices。否则,您可以发布您的DependencyInjection/MyBundleExtension.php 的代码吗?
  • 嗯,我的问题很基本......假设它是my_bundle.devices......我如何访问它?方法调用是什么?代码:github.com/paggybrasil/PaggyBoletoBundle/blob/master/…
  • 天啊...要是我看看我自己的代码就好了! :-) paggy_boleto.config

标签: php symfony configuration bundle


【解决方案1】:

您应该为此目的使用 parameters.yml。 然后你可以像这样轻松地在你的控制器中获取东西

$parameters = $this->container->getParameter('devices');

【讨论】:

  • 确实……@thecatontheflat 为我指明了正确的方向……我已经明白了:$this->container->getParameter('paggy_boleto.config');
  • parameters.yml 不起作用,如果您需要访问语义包配置。
【解决方案2】:

整个配置在参数paggy_boleto.config 中作为嵌套数组公开。要访问它,在控制器中:

$config = $this->container->getParameter('paggy_boleto.config');

var_dump 要查看的配置,您如何访问其中的条目。

如果您需要访问其他捆绑配置,您必须查看捆绑扩展类,它们如何将配置公开到 di 容器中。像您这样的一些包会公开整个配置,而其他一些包则不会(它们只公开特定的参数)。

在 PaggyBaletoBundle 中,这是相关的 line

$container->setParameter('paggy_boleto.config', $config);

【讨论】:

  • 谢谢!我知道这很简单。我用 Symfony 2 玩了一两个星期,然后切换到 Laravel + Angular.JS,现在又回到 Symfony 2... 脑中并发线程太多了!
【解决方案3】:

这取决于你如何实现 bundle 的配置构建器——它在其参数前面加上一个特定的前缀。

根据your casepaggy_boleto.config

【讨论】:

  • +1 你真的帮助了我,你的评论直截了当让我“发现”了答案,然后才在这里发布。我接受了 Pazi 的,因为他写了一个详细的答案,他只有 2.8k 代表,而你已经有 5k 等等。非常感谢你,我希望我能接受这两个答案并给你一百个代表点。一千!所以,分给了帕子,但你有我的感激和祝福!
猜你喜欢
  • 1970-01-01
  • 2012-08-21
  • 2018-12-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多