web-dev-qa-db-ja.com

リクエストがPOSTまたはSymfony2またはSymfony3のGETリクエストであったかどうかを確認するにはどうすればよいですか

リクエストが$_POSTリクエストであるか$_GETリクエストであるかを判断するための非常に簡単な方法(最善:簡単な$this->container->isGet()を呼び出すことができる)があるかどうか疑問に思いました。

ドキュメントによると、

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();

上記の通り?

47

コントローラーで実行したい場合は、

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

または、モデル(サービス)で、最初にモデルにRequestオブジェクトを挿入または渡し、次に上記と同じようにします。

編集:Symfony 3ではこのコードを使用します

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

またはこれ:

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

    }
}
39
timhc22

回答ではgetRequest()の使用が推奨されていますが、これは非推奨になったため、次の方法で実行できます。

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

またはこれ:

use Symfony\Component\HttpFoundation\Request;

$request = Request::createFromGlobals();

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

できること:

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

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

リクエストSymfony API ページのオブジェクトについて少し読んでください。

0
HelpNeeder