8

リスナーサービスがあります。その中のいくつかの設定パラメータを読みたいです。

リスナー クラス内のサービス コンテナーにアクセスするにはどうすればよいですか?

4

2 に答える 2

29

You can pass container parameters into your service by using the %your_param_name% notation:

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% ]

which will present itself as (in this example) the 3rd argument in your service's constructor method:

public function __construct($router, $container, $paramValue)
{
    // ...
}
于 2012-05-03T08:29:52.840 に答える
-1

@service_container解決済み:それ自体を引数としてリスナー サービスに渡す必要があります。

MyBundleName/Resources/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');
    }

}
于 2012-05-03T05:59:43.730 に答える