Php 如何在Symfony2或Symfony3中检查请求是否为POST或GET请求

Php 如何在Symfony2或Symfony3中检查请求是否为POST或GET请求,php,symfony,request,http-post,http-get,Php,Symfony,Request,Http Post,Http Get,我只是想知道是否有一种非常简单的方法(最好是:一个简单的$this->container->isGet()我可以调用)来确定请求是$\u POST还是$\u GET请求 根据文件, 请求对象保存有关客户端请求的信息。这 可以通过几个公共属性访问信息: 请求:相当于$\u POST query:相当于$\u GET($request->query->GET('name')) 但是我不能使用if($request->request)或if($request->query)进行检查,因为这两个属性

我只是想知道是否有一种非常简单的方法(最好是:一个简单的
$this->container->isGet()
我可以调用)来确定请求是
$\u POST
还是
$\u GET
请求

根据文件,

请求对象保存有关客户端请求的信息。这 可以通过几个公共属性访问信息:

  • 请求
    :相当于
    $\u POST
  • query
    :相当于
    $\u GET
    $request->query->GET('name')
但是我不能使用
if($request->request)
if($request->query)
进行检查,因为这两个属性都是request类中的现有属性

所以我想知道Symfony是否提供

$this->container->isGet();
// or isQuery() or isPost() or isRequest();

如上所述?

如果您想在控制器中执行此操作

$this->getRequest()->isMethod('GET');
或者在您的模型(服务)中,首先将请求对象注入或传递给您的模型,然后像上面一样执行相同的操作

编辑:对于Symfony 3,请使用此代码

if ($request->isMethod('post')) {
    // your code
}

因为答案建议使用
getRequest()
,现在已经不推荐使用了, 你可以这样做:

$this->get('request')->getMethod() == 'POST'
或者这个:

public function myAction(Request $request)
{
    if ($request->isMethod('POST')) {

    }
}
use Symfony\Component\HttpFoundation\Request;

$request = Request::createFromGlobals();

    if ($request->getMethod() === 'POST' ) {
}
或者这个:

public function myAction(Request $request)
{
    if ($request->isMethod('POST')) {

    }
}
use Symfony\Component\HttpFoundation\Request;

$request = Request::createFromGlobals();

    if ($request->getMethod() === 'POST' ) {
}
你可以做:

if($this->request->getRealMethod() == 'post') {
    // is post
}

if($this->request->getRealMethod() == 'get') {
    // is get
}

只需阅读第页上有关object的部分。

您可以像$request->get('name')这样做。无论请求方法是post还是get。如果您真的想确定请求方法,您可以添加一个“requirements:[\u method:post/get/DELETE…”您的意思是将这一行添加到路由配置中?我确实在那里检查了restrict方法,现在我想在controller中确定它们。如果你在路由中检查restrict方法,那么只需在你的controller中使用$request->get('name'),这就足够了,我使用一个controller来处理这两种方法,例如在forms中(你可以使用
$form->isSubmitted()
检查此项。但在我的情况下,我没有/使用表单。是的,谢谢,也在这里找到了答案,正如MHakvoort在他的答案中提到的,
$this->getRequest()
在Symfony 2.4中被弃用。这也被弃用。在controller中,您应该只使用类型提示的$request对象。例如,$request->getMethod()=='POST'。已更新问题名称,以便人们在搜索时可以找到它。这对于slim来说很可能是可行的,但Symfony的最佳实践是使用依赖项注入。但是,您的解决方案在Symfony 5中仍然有效。