Question

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?

Was it helpful?

Solution

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
}

OTHER TIPS

Or this:

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

    }
}

Or this:

use Symfony\Component\HttpFoundation\Request;

$request = Request::createFromGlobals();

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

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

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

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

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.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top