我有听众服务。 我想在里面读一些配置参数。
如何在侦听器类中访问服务容器?
答案 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');
}
}