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

时间:2012-05-03 05:25:16

标签: dependency-injection symfony

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

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

2 个答案:

答案 0 :(得分: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% ]

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

public function __construct($router, $container, $paramValue)
{
    // ...
}

答案 1 :(得分:-1)

已解决:我们需要将@service_container本身作为参数传递给侦听器服务

<强> MyBundleName /资源/ services.yml

services:
    kernel.listener.locale_listener:
        class: My\BundleName\Listener\LocaleListener
        tags:
            - { name: kernel.event_listener, event: kernel.request, method: onKernelRequest }
        arguments: [ @service_container ]

听众类:

class LocaleListener
{
    protected $container;

    public function __construct(\Symfony\Component\DependencyInjection\Container $container)
    {
        $this->container = $container;
    }
..

    public function Myfunction()
    {
        $languages = $this->container->getParameter('languages');
    }

}