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

Got*_*bel 47 php http-get http-post request symfony

我只是想知道是否有一种非常简单的方法(最好:$this->container->isGet()我可以调用一个简单的方法)来确定请求是a $_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();
Run Code Online (Sandbox Code Playgroud)

上文提到的?

Nig*_*hon 65

如果你想在控制器中做到这一点,

$this->getRequest()->isMethod('GET');
Run Code Online (Sandbox Code Playgroud)

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

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

if ($request->isMethod('post')) {
    // your code
}
Run Code Online (Sandbox Code Playgroud)

  • 正如MHakvoort在他的回答中提到的那样,`$ this-> getRequest()`从Symfony 2.4开始被弃用. (4认同)

tim*_*c22 39

或这个:

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

    }
}
Run Code Online (Sandbox Code Playgroud)

  • 更新了问题名称,以便人们可以在搜索时找到它 (2认同)

Azo*_*oel 6

或这个:

use Symfony\Component\HttpFoundation\Request;

$request = Request::createFromGlobals();

    if ($request->getMethod() === 'POST' ) {
}
Run Code Online (Sandbox Code Playgroud)