2013-03-16 59 views
0

我想設置一個簡單的事件偵聽器來執行一些代碼在每個請求的開始和之前。我只是想回應一個簡單的消息來檢查它是否正常工作。簡單的Symfony2事件似乎設置,但不是射擊

如果我犯了一個錯誤(例如錯字)或錯誤的配置(就像我在過去的30分鐘裏),它會返回各種錯誤信息。但我想我已經設置好了,因爲錯誤信息已經消失了。

這是我的代碼:

我已經加入這個我/app/config.yml文件

services: 
    kernel.listener.request_listener: 
     class: Acme\Bundle\NewBundle\EventListener\RequestListener 
     tags: 
      - { name: kernel.event_listener, event: kernel.exception, method: onKernelRequest } 

而且這是在相關文件

namespace Acme\Bundle\NewBundle\EventListener; 

use Symfony\Component\HttpKernel\Event\GetResponseEvent; 
use Symfony\Component\HttpFoundation\Response; 

class RequestListener 
{ 
    public function onKernelRequest(GetResponseEvent $event) 
    { 
     $response = new Response(); 
     $response->setContent("hello"); 

     $event->setResponse($response);  

    } 

} 

回答

2

我的代碼相信你已經迷上了一個錯誤的事件kernel.exception,它只在發生異常時被調用/分派。

我相信你應該已經上鉤了kernel.request事件,

services: 
    kernel.listener.request_listener: 
     class: Acme\Bundle\NewBundle\EventListener\RequestListener 
     tags: 
      - { name: kernel.event_listener, event: kernel.request, method: onKernelRequest } 

kernel.request被稱爲/出動每個請求,並開始處理請求之前。

http://symfony.com/doc/2.0/book/internals.html#handling-requests

之前做其他事情時,kernel.request事件通知 - 如果有一個偵聽器返回的響應,它跳躍直接執行步驟8;

+0

完美。得到它了。當我允許我接受一個答案時(7分鐘),我會回來。謝謝 – user2143356 2013-03-16 14:10:40

相關問題