如何在Symfony2控制器中获取请求类型(主/从)?
答
要检测请求是否为主,需要使用RequestStack
,这应该注入到控制器中。请求堆具有3种有用的方法
getCurrentRequest();
getMasterRequest();
getParentRequest();
的getParentRequest()
将总是返回null如果当前请求是主。
答
非常容易,只要打电话给你Request
对象的getMethod()
方法:
$method = $this->get('request')->getMethod();
这将返回当前请求的,例如HTTP方法GET
,POST
,PUT
或DELETE
。
答
我一直在寻找这个东西,它似乎只是传递,所以似乎没有一个地方知道它是什么。
我想解决这个问题的方法是创建一个简单的kernel.request侦听器,它只是向请求添加一个属性。下面粗(未经测试)代码:
public function onKernelRequest(GetResponseEvent $event)
{
$event->getRequest()->attributes->set('_request_type', $event->getRequestType());
}
然后在控制器,你应该能够做到:
$requestType = $this->getRequest()->attributes->get('_request_type');
再次,这是未经测试。您需要写出完整的监听器类并将其添加到服务配置文件中,但除此之外,我认为这将起作用。
Noo。我的意思是:这是请求主或子请求? – Koc
好的,对不起。在这种情况下,您必须挂钩到'kernel.request'事件并检查$ event-> getRequestType()是否等于'HttpKernelInterface :: MASTER_REQUEST'或'HttpKernelInterface :: SUB_REQUEST'。 – igorw
@igorw,你应该用你在评论中给出的答案更新你的帖子,以便它可以被提升。人们不回答不回答问题的答案。 – Quentin