2012-05-07 9 views
15

में वर्तमान वातावरण प्राप्त करें मैं जानना चाहता हूं कि मैं एक श्रोता के भीतर app_dev.php का उपयोग कर रहा हूं (config.yml में एक सेवा के रूप में स्थापित)। यह getEnvironment() पर विफल रहता है हालांकि यह तरीका है जिसे मैं नियंत्रक में उपयोग करता हूं।Symfony2 प्रतिक्रिया श्रोता

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] 

उत्तर

19

$event->getKernel() एक वस्तु जो HttpKernelInterface लागू करता है देता है। जबकि Kernel या AppKernel लागू KernelInterface जिसमें getEnvironment विधि है। आपको अपने श्रोता में @kernel सेवा इंजेक्ट करना होगा।

+1

धन्यवाद, उन चरणों को दिखाने के लिए मेरे प्रश्न को संशोधित किया। – ojreadmore

+0

@ojreadmore 1+ माने! – mate64