【发布时间】:2017-08-05 15:49:52
【问题描述】:
我有一个包含我已配置的侦听器的捆绑包:
class Configuration implements ConfigurationInterface
{
/**
* {@inheritdoc}
*/
public function getConfigTreeBuilder ()
{
$treeBuilder = new TreeBuilder();
$rootNode = $treeBuilder->root('mybundle_name');
$rootNode
->children()
->scalarNode('name')->defaultValue('value')
->end()
;
return $treeBuilder;
}
}
我还有一个监听器,其中注入了一些服务,主要是原则和容器参数:
services:
app.router_subscriber:
class: MyBundle\EventSubscriber\RequestSubscriber
calls:
- [setEntityManager, ['@doctrine.orm.entity_manager']]
- [setContainer, ['@service_container']]
tags:
- { name: kernel.event_subscriber }
当我转储 $this->容器时,我可以看到除了我自己在上面定义的参数。
当我跑步时
bin/console config:dump-reference MyBundle
我确实看到了我的期望
将我的包参数合并到应用程序参数中我缺少什么?我看到列出了第三方捆绑包,但不是我自己的捆绑包。我尽可能逐字逐句地遵循文档,因此据我所知,已经遵循了约定......
编辑 |我还没有创建 bundle config.yml 文件——我假设 Configuraiton 对象为我做了这些——设置架构和默认值——可以被应用程序配置覆盖(如果需要)。我是否需要指定一个捆绑包 config.yml 并将类似这样的内容导入应用程序 (Merge config files in symfony2)?
想法?
【问题讨论】:
-
不确定我是否理解您的问题。配置值不会自动成为参数。您需要使用 $container->setParameter(); 在 Extension::load() 方法中显式创建它们;当然,您可能会问一些完全不同的问题。
-
我不确定我的问题是 TBH。我假设 Configure::getConfigTreeBuilder() 基本上设置了格式和预期值、默认值等,这足以使用默认值初始化容器——然后我的应用程序代码可以使用?
-
基本上...我如何在内部初始化我的包(通过配置类和/或 config.yml)并分别通过 AppBundle 或 MyBundle 中的服务容器提供这些参数。我已经关注了文档,但我遗漏了一些东西,因为这些参数没有显示出来。我没有注册某些东西或误解了某些东西
标签: symfony symfony-3.2