如何检查请求是不是是 Symfony2 或 Symfony3 中的 POST 或 GET 请求

Posted

技术标签:

【中文标题】如何检查请求是不是是 Symfony2 或 Symfony3 中的 POST 或 GET 请求【英文标题】:How can I check if request was a POST or GET request in Symfony2 or Symfony3如何检查请求是否是 Symfony2 或 Symfony3 中的 POST 或 GET 请求 【发布时间】:2014-05-16 03:32:43 【问题描述】:

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

根据文档,

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

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

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

所以我想知道 Symfony 提供了类似的东西

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

上面提到过?

【问题讨论】:

你可以像 $request->get('name') 那样做。无论请求方法是 post 还是 get..如果你真的想确定请求方法,你可以添加一个“要求:[_method:发布/获取/删除....]" 您的意思是将这一行添加到路由配置中?我确实在那里检查了限制方法,现在我想在控制器中确定它们。 如果你检查路由中的限制方法,那么只需在控制器中使用 $request->get('name') 就足够了 我正在使用一个控制器来处理这两种方法,例如就像在表格中一样(您可以使用$form->isSubmitted() 来检查这个。但就我而言,我没有/使用表格。 【参考方案1】:

如果你想在控制器中做,

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

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

编辑:Symfony 3 使用此代码

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

【讨论】:

是的,谢谢,在这里也找到了答案***.com/a/6723808/1828051 正如 MHakvoort 在他的回答中也提到的那样,$this->getRequest() 在 Symfony 2.4 中已被弃用。【参考方案2】:

或者这个:

public function myAction(Request $request)

    if ($request->isMethod('POST')) 

    

【讨论】:

已更新问题名称,以便人们在搜索时找到它【参考方案3】:

或者这个:

use Symfony\Component\HttpFoundation\Request;

$request = Request::createFromGlobals();

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

【讨论】:

这对于 slim 来说很可能没问题,但 Symfony 的最佳实践是使用依赖注入。但是,您的解决方案在 Symfony 5 中仍然有效。【参考方案4】:

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

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

【讨论】:

这也被弃用了。在控制器中,您应该只使用类型提示的 $request 对象。例如,$request->getMethod() == 'POST'。【参考方案5】:

你可以这样做:

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


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

只需在Symfony API 页面上阅读一些关于request 对象的信息。

【讨论】:

以上是关于如何检查请求是不是是 Symfony2 或 Symfony3 中的 POST 或 GET 请求的主要内容,如果未能解决你的问题,请参考以下文章

Symfony2,检查一个动作是不是被ajax调用

Symfony 2:如何检查用户是不是未在模板中登录?

如何在 Symfony2 中抛出 403 异常?

在 Symfony2 流式传输期间接受请求

Symfony2.8。如何从发布请求中获取数据

如何在 LoginListener 中的 onSecurityInteractiveLogin 方法中重定向 - Symfony2