Ответ 1
$event- > getKernel() возвращает объект, который реализует HttpKernelInterface. В то время как Kernel или AppKernel
реализует KernelInterface, у которых есть метод getEnvironment
. Вы должны ввести @kernel
службу в своем слушателе.
Я хотел бы знать, использую ли я 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]
$event- > getKernel() возвращает объект, который реализует HttpKernelInterface. В то время как Kernel или AppKernel
реализует KernelInterface, у которых есть метод getEnvironment
. Вы должны ввести @kernel
службу в своем слушателе.