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 に答える