控制器中是否有可能获取请求类型?怎么样?
答案 0 :(得分:14)
要检测请求是否为主服务器,需要使用RequestStack
,这应该注入您的控制器。请求堆栈有3个有用的方法
getCurrentRequest();
getMasterRequest();
getParentRequest();
如果当前请求是主服务器,getParentRequest()
将始终返回null。
答案 1 :(得分:2)
我自己正在寻找这个,似乎它只是四处传播,所以似乎没有一个地方知道它是什么。
我解决这个问题的想法是创建一个简单的kernel.request监听器,它只是为请求添加一个属性。下面粗略(未经测试)的代码:
public function onKernelRequest(GetResponseEvent $event)
{
$event->getRequest()->attributes->set('_request_type', $event->getRequestType());
}
然后在控制器中你应该能够:
$requestType = $this->getRequest()->attributes->get('_request_type');
这是未经测试的。您需要写出完整的侦听器类并将其添加到服务配置文件中,但除此之外,我认为这将有效。
答案 2 :(得分:-2)
很简单,只需在getMethod()
对象上调用Request
方法:
$method = $this->get('request')->getMethod();
这将返回当前请求的HTTP方法,例如GET
,POST
,PUT
或DELETE
。