Symfony2 получает текущую среду в ответном прослушивателе

Я хотел бы знать, использую ли я 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]

Ответы

Ответ 1

$event- > getKernel() возвращает объект, который реализует HttpKernelInterface. В то время как Kernel или AppKernel реализует KernelInterface, у которых есть метод getEnvironment. Вы должны ввести @kernel службу в своем слушателе.