在Symfony2事件中引用Translator

时间:2013-04-08 09:15:48

标签: symfony

我知道我可以在控制器中使用它:

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

...但是如何在Symfony2 GetResponseEvent或FilterResponseEvent事件中引用转换器?

我知道我可以使用 - > getRequest()但我不知道如何从Request对象中获取它。

1 个答案:

答案 0 :(得分:7)

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