17

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

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

解決策の編集:私のリスナークラス:

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

config.ymlの下部:

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

1 に答える 1

20

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

于 2012-05-07T18:02:14.980 に答える