0

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

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

...但是如何在 Symfony2 GetResponseEvent 或 FilterResponseEvent 事件中获得对翻译器的引用?

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

4

1 回答 1

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 }

Your/Bundle/Listener/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');
    }
}
于 2013-04-08T09:26:11.493 回答