Symfony2:如何在侦听器中获取配置参数?

Ami*_*mit 8 dependency-injection symfony

我有一个听众服务.我想在里面读一些配置参数.

如何在侦听器类中访问服务容器?

ric*_*age 29

您可以使用%your_param_name%表示法将容器参数传递到服务中:

services:
    kernel.listener.locale_listener:
        class: My\BundleName\Listener\LocaleListener
        tags:
            - { name: kernel.event_listener, event: kernel.request, method: onKernelRequest }
        arguments: [ @router, @service_container, %your_param_name% ]
Run Code Online (Sandbox Code Playgroud)

这将在服务的构造函数方法中显示为(在此示例中)第3个参数:

public function __construct($router, $container, $paramValue)
{
    // ...
}
Run Code Online (Sandbox Code Playgroud)

  • 有关于此的更多文档吗?我也有一个Listener作为服务.在我的config.yml中,我有一些我希望在Listener中访问的设置,我应该将它们配置为参数吗? (2认同)
  • 对我不起作用,或者至少对于 Symfony 4 中代表 kernel.response 事件调度的 FilterResolveEvent 不起作用。构造函数一直用 0 个参数调用,导致异常。搜索网络并没有给出任何线索,但是 SO 或博客中的一些过时的匹配只是重复官方 Symfony 教程中的部分事实。抱歉,但是整个框架一团糟...是否有任何官方文档页面解释所有这些“在 YAML 中使用 % 或 @ 放置参数,以便 **事件监听器** 相应地在构造函数中获取参数”? (2认同)