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

时间:2014-04-04 02:13:57

标签: php symfony request http-post http-get

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

根据文件,

  

Request对象包含有关客户端请求的信息。这个   信息可以通过几个公共财产访问:

     
      
  • request:相当于$_POST;
  •   
  • query:相当于$_GET$request->query->get('name'));
  •   

但我无法使用if($request->request)if($request->query)进行检查,因为两者都是Request类中的现有属性。

所以我想知道Symfony提供类似

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

如上所述?

5 个答案:

答案 0 :(得分:64)

如果你想在控制器中这样做,

$this->getRequest()->isMethod('GET');

或在您的模型(服务)中,首先将Request对象注入或传递给您的模型,然后像上面那样执行相同操作。

修改:对于Symfony 3,请使用此代码

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

答案 1 :(得分:39)

或者这个:

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

    }
}

答案 2 :(得分:4)

由于答案建议使用现已弃用的getRequest(), 你可以这样做:

$this->get('request')->getMethod() == 'POST'

答案 3 :(得分:2)

或者这个:

use Symfony\Component\HttpFoundation\Request;

$request = Request::createFromGlobals();

    if ($request->getMethod() === 'POST' ) {
}

答案 4 :(得分:0)

你可以这样做:

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

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

请在request页面上阅读Symfony API对象。