如何在Symfony2控制器中获取请求类型(主/子)?

时间:2011-07-17 10:50:37

标签: symfony

控制器中是否有可能获取请求类型?怎么样?

3 个答案:

答案 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方法,例如GETPOSTPUTDELETE