2013-04-08 80 views
0

我知道我可以在控制器中使用:参考翻译在Symfony2的事件

$this->get('translator')->trans('key_name') 

...但我怎么在Symfony2中GetResponseEvent或FilterResponseEvent事件得到参考翻译?我知道我可以使用 - > getRequest(),但我不明白我怎么能从Request对象中获取它。

回答

6

services.yml你只需要添加@translator服务引用

services.yml

services: 
    mylistener: 
     class: Your\Bundle\Listener\RequestListener 
     arguments: [ @translator ] 
     tags: 
      - { name: kernel.event_listener, event: kernel.request, method: onKernelRequest } 

你/包/监听器/ RequestListener.php

namespace Your\Bundle\Listener; 

use Symfony\Component\Translation\TranslatorInterface; 
use Symfony\Component\HttpKernel\Event\GetResponseEvent; 

class RequestListener 
{ 
    protected $translator; 

    public function __construct(TranslatorInterface $translator) 
    { 
     $this->translator = $translator; 
    } 

    public function onKernelRequest(GetResponseEvent $event) 
    { 
     $this->translator->trans('key_name'); 
    } 
} 
+0

这在Symfony 3中不起作用。参数[@translator]是无效的YAML。 ['@translator']传递YAML测试,但不作为有效的TranslatorInterface类型传入构造函数 – pogeybait 2016-08-09 09:28:10