サーチ…


前書き

SymfonyのRequestクラスは、HTTPリクエストのオブジェクト指向の表現です。 URL、クエリ文字列、アップロードされたファイル、クッキー、その他のヘッダーなどの情報がブラウザから取得されます。

構文

  • $ request-> getPathInfo(); //要求されている(ただしクエリ文字列は含まれていない)パス(URLのローカル部分)を返します。つまり、 https://example.com/foo/bar?key=valueにアクセスすると、/ foo / bar
  • $ request-> query-> get( 'id'); //クエリ文字列パラメータ($ _GET)を返します。
  • $ request-> query-> get( 'id'、1); //デフォルト値のクエリ文字列パラメータを返します
  • $ request-> request-> get( 'name'); //リクエストボディ変数($ _POST)を返します。
  • $ request-> files-> get( 'attachment'); // "attachment"で指定されたUploadedFileのインスタンスを返します。
  • $ request-> cookies-> get( 'PHPSESSID'); //クッキーの値を返します($ _COOKIE)
  • $ request-> headers-> get( 'content_type'); // HTTPリクエストヘッダを返す
  • $ request-> getMethod(); // HTTPリクエストメソッドを返します(GET、POST、PUT、DELETEなど)
  • $ request-> getLanguages(); //クライアントが受け入れる言語の配列を返します

クエリ文字列パラメータの取得

ページの番号がクエリ文字列パラメータとして渡される、ページ単位の製品リストを作成するとします。たとえば、3ページ目を取得するには、次のようにします。

http://example.com/products?page=3

生のHTTPリクエストは次のようになります。

GET /products?page=3 HTTP/1.1
Host: example.com
Accept: text/html
User-Agent: Mozilla/5.0 (Macintosh)

リクエストオブジェクトからページ番号を取得するには、 queryプロパティにアクセスしquery

$page = $request->query->get('page'); // 3

pageパラメータの場合は、クエリ文字列パラメータが設定されていない場合に、デフォルト値を渡すことをお勧めします。

$page = $request->query->get('page', 1);

つまり、誰かがhttp://example.com/productsを訪れたとき(クエリ文字列がないことに注意して$page )、 $page変数にはデフォルト値1が含まれます。

グローバル変数からのRequestオブジェクトの作成

PHPは、 $_POST$_GET$_FILES$_SESSIONなどのHTTPリクエストに関する情報を含む、いわゆるグローバル変数を公​​開しています。 Requestクラスには、 Requestをインスタンス化するための静的なcreateFromGlobals()メソッドが含まれていますこれらの変数に基づいたオブジェクト:

use Symfony\Component\HttpFoundation\Request;

$request = Request::createFromGlobals();

Symfonyフレームワークを使用する場合は、リクエストオブジェクトを自分でインスタンス化しないでください。代わりに、フレームワークがapp.php / app_dev.phpブートストラップされたときにインスタンス化されるオブジェクトを使用する必要があります。たとえば、コントローラにリクエストオブジェクトをヒンティングするなどしてください

POST変数へのアクセス

method="post"で送信されたフォームの内容を取得するには、 postプロパティを使用します。

$name = $request->request->get('name');

クッキーの内容へのアクセス

$id = $request->cookies->get('PHPSESSID');

これは、ブラウザから送信された 'PHPSESSID'クッキーの値を返します。



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow