2011-07-17 6 views

Respuesta

12

Para detectar si la solicitud es maestra o no, se requiere el uso del RequestStack, que se debe inyectar en el controlador. La pila solicitud tiene 3 métodos útiles

getCurrentRequest(); 
getMasterRequest(); 
getParentRequest(); 

El getParentRequest() siempre devolverá NULL si la petición actual es el maestro.

0

fácil, simplemente llame al método getMethod() en el objeto Request:

$method = $this->get('request')->getMethod(); 

Esto devolverá el método HTTP de la petición actual, por ejemplo, GET, POST, PUT o DELETE.

+3

Noo. Quiero decir: ¿es esta solicitud maestra o sub solicitud? – Koc

+17

Ah bien, perdón por eso. En ese caso, deberá conectar el evento 'kernel.request' y comprobar si' $ event-> getRequestType() 'es igual a' HttpKernelInterface :: MASTER_REQUEST' o 'HttpKernelInterface :: SUB_REQUEST'. – igorw

+0

@igorw, debe actualizar su publicación con la respuesta que dio en su comentario para que se pueda subir el voto. La gente no reprende una respuesta que no responde la pregunta. – Quentin

2

Estaba buscando esto por mí mismo, y parece que se acaba de pasar, por lo que no parece haber un solo lugar que sepa de qué se trata.

Mi idea para resolver esto sería crear un simple oyente kernel.request que simplemente agregue un atributo a la solicitud. Rugosa (no probado) código de abajo:

public function onKernelRequest(GetResponseEvent $event) 
{ 
    $event->getRequest()->attributes->set('_request_type', $event->getRequestType()); 
} 

Luego, en el controlador que debe ser capaz de hacer:

$requestType = $this->getRequest()->attributes->get('_request_type'); 

De nuevo, esto no se ha probado. Tendría que escribir la clase de oyente completa y agregarla al archivo de configuración de servicios, pero aparte de eso, creo que esto funcionará.

Cuestiones relacionadas