サーチ…
前書き
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'クッキーの値を返します。