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的对象。而KernelAppKernel实现了具有方法的KernelInterface 。getEnvironment您必须@kernel在侦听器中注入服务。

于 2012-05-07T18:02:14.980 回答