[英]How can I check if request was a POST or GET request in Symfony2 or Symfony3
我只是想知道是否有一种非常简单的方法(最好:一个简单的$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();
上文提到的?
如果您想在控制器中执行此操作,
$this->getRequest()->isMethod('GET');
或在您的模型(服务)中,首先将 Request 对象注入或传递给您的模型,然后执行与上述相同的操作。
编辑:对于 Symfony 3,使用此代码
if ($request->isMethod('post')) {
// your code
}
或这个:
public function myAction(Request $request)
{
if ($request->isMethod('POST')) {
}
}
或这个:
use Symfony\Component\HttpFoundation\Request;
$request = Request::createFromGlobals();
if ($request->getMethod() === 'POST' ) {
}
由于答案建议使用现在已弃用的getRequest()
,因此您可以这样做:
$this->get('request')->getMethod() == 'POST'
你可以这样做:
if($this->request->getRealMethod() == 'post') {
// is post
}
if($this->request->getRealMethod() == 'get') {
// is get
}
只需在Symfony API页面上阅读一些关于请求对象的信息。
此外 - 如果您更喜欢使用常量:
if ($request->isMethod(Request::METHOD_POST)) {}
请参阅请求类:
namespace Symfony\Component\HttpFoundation;
class Request
{
public const METHOD_HEAD = 'HEAD';
public const METHOD_GET = 'GET';
public const METHOD_POST = 'POST';
public const METHOD_PUT = 'PUT';
public const METHOD_PATCH = 'PATCH';
public const METHOD_DELETE = 'DELETE';
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.