web-dev-qa-db-fra.com

Comment puis-je vérifier si la demande était une POST ou demande GET dans Symfony2 ou Symfony3

Je me demandais simplement s'il existe un moyen très simple (le mieux: une simple $this->container->isGet() que je peux appeler) pour déterminer si la demande est une demande $_POST Ou $_GET.

Selon les documents,

Un objet Request contient des informations sur la demande du client. Ces informations sont accessibles via plusieurs propriétés publiques:

  • request: équivalent de $_POST;
  • query: équivalent de $_GET ($request->query->get('name'));

Mais je ne pourrai pas utiliser if($request->request) ou if($request->query) pour vérifier, car les deux sont des attributs existants dans la classe Request.

Je me demandais donc si Symfony propose quelque chose comme

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

mentionné ci-dessus?

47

Si vous voulez le faire dans le contrôleur,

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

ou dans votre modèle (service), injectez ou passez d'abord l'objet Request à votre modèle, puis faites la même chose que ci-dessus.

Edit: pour Symfony 3 utilisez ce code

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

Ou ca:

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

    }
}
39
timhc22

Puisque la réponse a suggéré d'utiliser getRequest() qui est maintenant obsolète, vous pouvez le faire par ceci:

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

Ou ca:

use Symfony\Component\HttpFoundation\Request;

$request = Request::createFromGlobals();

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

Vous pourriez faire:

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

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

Il suffit de lire un peu sur demande objet sur Symfony API page.

0
HelpNeeder