我有一个监听服务。我想读取其中的一些配置参数。
如何访问侦听器类中的服务容器?
您可以使用以下%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% ]
这将在您的服务的构造方法中显示为(在此示例中)第三个参数:
public function __construct($router, $container, $paramValue)
{
// ...
}
已解决:我们需要将@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');
}
}