Reputation: 9552
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
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
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
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
Reputation: 219
Or this:
use Symfony\Component\HttpFoundation\Request;
$request = Request::createFromGlobals();
if ($request->getMethod() === 'POST' ) {
}
Upvotes: 6
Reputation: 7451
Or this:
public function myAction(Request $request)
{
if ($request->isMethod('POST')) {
}
}
Upvotes: 47
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