dialogik
dialogik

Reputation: 9552

How can I check if request was a POST or GET request in Symfony2 or Symfony3

I just wondered if there is a very easy way (best: a simple $this->container->isGet() I can call) to determine whether the request is a $_POST or a $_GET request.

According to the docs,

A Request object holds information about the client request. This information can be accessed via several public properties:

  • request: equivalent of $_POST;
  • query: equivalent of $_GET ($request->query->get('name'));

But I won't be able to use if($request->request) or if($request->query) to check, because both are existing attributes in the Request class.

So I was wondering of Symfony offers something like the

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

mentioned above?

Upvotes: 51

Views: 69272

Answers (6)

webDEVILopers
webDEVILopers

Reputation: 1916

In addition - if you prefer using constants:

if ($request->isMethod(Request::METHOD_POST)) {}

See the Request class:

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';

Upvotes: 3

Nighon
Nighon

Reputation: 1074

If you want to do it in controller,

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

or in your model (service), inject or pass the Request object to your model first, then do the same like the above.

Edit: for Symfony 3 use this code

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

Upvotes: 88

HelpNeeder
HelpNeeder

Reputation: 6480

You could do:

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

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

Just read a bit about request object on Symfony API page.

Upvotes: 0

Azoel
Azoel

Reputation: 219

Or this:

use Symfony\Component\HttpFoundation\Request;

$request = Request::createFromGlobals();

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

Upvotes: 6

timhc22
timhc22

Reputation: 7451

Or this:

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

    }
}

Upvotes: 47

Matheno
Matheno

Reputation: 4142

Since the answer suggested to use getRequest() which is now deprecated, You can do it by this:

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

Upvotes: 4

Related Questions