2012-05-07 8 views
15

リスナー内でapp_dev.phpを使用しているかどうかを知りたいとします(config.ymlのサービスとして設定されています)。これはgetEnvironment()で失敗しますが、これはコントローラで使用するメソッドです。symfony2は応答リスナーで現在の環境を取得します

public function onKernelResponse(FilterResponseEvent $event) { 
    $kernel = $event->getKernel(); 
    $this->isAppDev = ($kernel->getEnvironment() == "dev") ? true : false; 
} 

編集ソリューション:私のリスナークラスで :config.ymlの下部にある

use Symfony\Component\HttpFoundation\Response; 
use Symfony\Component\HttpKernel\Event\FilterResponseEvent; 
use Symfony\Component\HttpKernel\Kernel; 
private $kernel; 
public function __construct(Kernel $kernel) { 
    $this->kernel = $kernel 
} 
public function onKernelResponse(FilterResponseEvent $event) { 
    $this->isAppDev = ($this->kernel->getEnvironment() == "dev") ? true : false; 
} 

services: 
    my.listener: 
     class: Path\To\Listener 
     tags: 
      - { name: kernel.event_listener, event: kernel.response } 
     arguments: [@kernel] 

答えて

19

$event->getKernel()HttpKernelInterfaceを実装するオブジェクトを返します。一方、KernelまたはAppKernelgetEnvironmentメソッドを持つKernelInterfaceを実装します。リスナーに@kernelサービスを注入する必要があります。

+1

ありがとう、これらの手順を示すために私の質問を変更しました。 – ojreadmore

+0

@ojreadmore 1+ mane! – mate64

関連する問題