Symfony2 在响应监听器中获取当前环境

标签 symfony

我想知道我是否在监听器中使用 app_dev.php(在 config.yml 中设置为服务)。尽管这是我在 Controller 中使用的方法,但它在 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 的对象。而KernelAppKernel 实现 KernelInterface其中有 getEnvironment 方法。您必须在监听器中注入(inject) @kernel 服务。

关于Symfony2 在响应监听器中获取当前环境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10486173/

相关文章:

symfony - Symfony 如何生成表单字段的 id/name?

symfony - 如何防止Symfony2转义html

php - 交响乐 4 : You have requested a non-existent service

php - Symfony2 - 如何在 Controller 中使用 __construct() 并访问 Securty.Context?

symfony - 在 Symfony 中使用内存提供程序登录用户

symfony - 了解 Symfony2 中的架构和文件夹结构?

javascript - 包含最后一个数组元素的表单集合

php - 模拟 Controller 从 WebTestCase 调用的服务

symfony - 如何在 Symfony 2 的序列化器配置中公开相关对象的属性?

php - 带有类型文件的 Symfony 2 表单集合字段