2012-03-08 4 views
0

안녕하십니까. 우리 사이트의 어느 페이지에서나 항상 수행되어야하는 작업/기능을 호출하고 싶습니다. app_dev.php에서 가능한지 알 수 없거나 나에게 추천해야 할 곳이 있는지 잘 모릅니다.Symfony2 : app_dev.php에서 사용자 객체를 가져 오는 것이 가능합니다.

비록 클래스를 만들고이를 서비스로 정의하지만 실제로 그 서비스를 시작하는 방법을 모릅니다. 우리는 서비스가 항상 시작되어야하며, 사용자가 방문하는 페이지가 무엇인지에 관계없이 서비스를 실행하고 컨트롤러를 수행해야합니다.

는 프론트 엔드 컨트롤러 (app.php 또는 app_dev.php)는 제어의 수준을 얻을 수 있도록 응용 프로그램이 아직 부팅되지 않은 당신에게

답변

1

감사드립니다. 대신, 이벤트 리스너를 만들고 kernel.request event을 듣고 싶습니다. 해당 의사 페이지에서 :

이 이벤트의 목표는 즉시 응답 개체를 반환하거나 이벤트 후 Controller를 호출 할 수 있도록 변수를 설정하는 것입니다. 모든 리스너는 이벤트의 setResponse() 메서드를 통해 Response 객체를 반환 할 수 있습니다. 이 경우 다른 모든 리스너는 호출되지 않습니다. 이 이벤트를 수신 할 수있는 서비스를 설정하기 위해

, 당신은 이런 식으로 뭔가를 선언 할 것 : 그냥 정상적인 서비스 선언입니다

# services.yml 
foo_request_listener: 
    class: FooVendor\BarBundle\EventListener\RequestEventListener 
    arguments: [] # whatever dependencies your listener needs 
    tags: 
    - { name: kernel.event_listener, event: kernel.request, method: onKernelRequest } 

첫 번째 부분 (tags 전). kernel.event_listener 태그는 kernel.request 이벤트가 발생할 때 메서드를 통해 GetResponseEvent 개체를 받아야한다고 말하면서 (메서드 이름은 임의로, 서비스 클래스가 구현하는지 확인하십시오.) 컨트롤러 이전의 모든 요청에서 발생합니다. 호출됩니다.

+0

내가 그렇게 선언해야합니까? 서비스 : kernel_listener : 클래스 : Bernardao \ ExtraBundle \ 리스너 인수 : 태그 : - {이름 : kernel.event_listener 이벤트 : kernel.request, 방법 onKernelRequest} - 내 청취자 Bernardao

+0

방금 ​​Symfony \ Component \ HttpKernel \ Event 네임 스페이스의 GetResponseEvent를 찾았습니다. 아프다. 인스턴트 메신저 stackoverflow에 새로운, 그래서 잘 모르겠어요 어떻게 대답 :-p – Bernardao

+0

@ 베르나르도, 참조 요청 커널 요청 청취자 확인 [SessionListener] (https://github.com/symfony/symfony/blob/master/src/Symfony/ 번들/FrameworkBundle/EventListener/SessionListener.php) 클래스. 서비스는 [여기] (https://github.com/symfony/symfony/blob/master/src/Symfony/Bundle/FrameworkBundle/Resources/config/session.xml#L37)에 정의되어 있습니다. –

관련 문제