依存関係注入を通じて現在の HTTP リクエスト インスタンスを取得します。現在のリクエスト インスタンスは、サービス コンテナによって自動的に挿入されます。 :
<?phpnamespace App\Http\Controllers;use Illuminate\Http\Request;use Illuminate\Routing\Controller;class UserController extends Controller{ /** * 存储新用户 * * @param Request $request * @return Response */ public function store(Request $request) { $name=$request->input('name'); // }}
コントローラー メソッドがルート パラメーターの入力も取得することを期待している場合は、たとえばルートが次のように定義されている場合、ルート パラメーターを配置するだけです。
$app->put('user/{id}','UserController@update');
IlluminateHttpRequest をタイプヒントして渡すこともできます。ルートパラメータにアクセスするためのコントローラーメソッドを定義します:
<?php namespace App\Http\Controllers; use Illuminate\Http\Request;use Illuminate\Routing\Controller;classUser Controller extends Controller{ /** * 更新指定用户 * * @param Request $request * @param int $id * @return Response */ public function update(Request $request,$id) { // }}
1.1 基本的なリクエスト情報
IlluminateHttpRequest インスタンスは、アプリケーションの HTTP リクエストを検出するための複数のメソッドを提供します。Lumen の IlluminateHttpRequest は SymfonyComponentHttpFoundationRequest クラスから継承します。
リクエスト URI を取得する
path メソッドは、リクエストされた URI を返します。 したがって、受信したリクエストのパスが http://domain.com/foo/bar の場合、path メソッドは foo/bar を返します:
$uri=$request->path();
if($request->is('admin/*')){ //}
//不带请求参数$url=$request->url();//带请求参数$url = $request->fullUrl();
メソッドメソッドはリクエストHTTPリクエストメソッドを返します。 isMethod メソッドを使用して、HTTP リクエスト メソッドが指定された文字列と一致するかどうかを確認することもできます。
$method=$request->method();if($request->isMethod('post')){ //}
PSR-7 標準は、リクエストとレスポンスを含む HTTP メッセージ インターフェイスを指定します。 PSR-7 リクエストインスタンスを取得したい場合は、まずいくつかのライブラリをインストールする必要があります。Lumen は Symfony HTTP Message Bridge コンポーネントを使用して、一般的な Lumen リクエストとレスポンスを PSR-7 互換の実装に変換します。
composer require symfony/psr-http-message-bridgecomposer require zendframework/zend-diactoros
use Psr\Http\Message\ServerRequestInterface;$app->get('/', function (ServerRequestInterface $request) { //});
いくつかの簡単なメソッドを使用して、IlluminateHttpRequest インスタンスからユーザー入力にアクセスします。入力アクセス インターフェイスはすべてのリクエスト メソッドで同じであるため、リクエストに使用される HTTP リクエスト メソッドについて心配する必要はありません。
$name = $request->input('name');
If 入力メソッドに 2 番目のパラメータとしてデフォルト値を渡すこともできます。リクエストの入力値は次のとおりです。現在のリクエストが表示されない場合、この値が返されます:
$name = $request->input('name', 'Sally');
フォーム配列入力を処理する場合、「.」を使用して配列にアクセスできます:
$input = $request->input('products.0.name');$names = $request->input('products.*.name');
入力値が表示されるかどうかを確認するには
値がリクエストに表示されるかどうかを判断するには、has メソッドを使用できます。値が表示され空でない場合、has メソッドは true を返します:
if ($request->has('name')) { //}
すべての入力データを取得する
また、次のようにしてすべての入力データを取得することもできます。 all メソッド:
$input = $request->all();
入力データの一部を取得する
入力データのサブセットを取り出す必要がある場合は、only メソッドまたは else メソッドを使用できます。どちらのメソッドも配列または動的パラメータ リストを受け取ります。唯一のパラメータ:
$input = $request->only('username', 'password');$input = $request->only('username', 'password');$input = $request->except('credit_card');$input = $request->except('credit_card');
ファイルのアップロード
アップロードされたファイルを取得する
IlluminateHttpRequest インスタンス メソッドのファイルを使用して、アップロードされたファイルにアクセスできます。このメソッドによって返されるオブジェクトは、SymfonyComponentHttpFoundationFileUploadedFile クラスのインスタンスであり、ファイルと対話するためのメソッドを提供する PHP 標準ライブラリの SplFileInfo クラス:
$file = $request->file('photo');
ファイルが存在するかどうかを確認する
hasFile メソッドを使用してファイルが存在するかどうかを確認する リクエスト内に存在するかどうか:
if ($request->hasFile('photo')) { //}
ファイルが存在するかどうかを確認するアップロードに成功しました
isValid メソッドを使用して、アップロード プロセス中にファイルにエラーがあるかどうかを判断します。
if ($request->file('photo')->isValid()){ //}
アップロードされたファイルを保存します
move メソッドを使用して、アップロードされたファイルを新しいパスに保存します。一時ディレクトリ (PHP 構成ファイルで構成) から指定された新しいディレクトリにアップロードされたファイル:
$request->file('photo')->move($destinationPath);$request->file('photo')->move($destinationPath, $fileName);
その他のファイル メソッド
UploadFile インスタンスには他にも多くのメソッドがあります。その他の関連メソッドについては、このクラスの API を確認してください。