ホームページ  >  記事  >  バックエンド開発  >  laravel基本チュートリアル -- リクエスト

laravel基本チュートリアル -- リクエスト

WBOY
WBOYオリジナル
2016-06-23 13:07:441134ブラウズ

HTTP リクエスト

アクセスリクエスト

依存性注入によって http リクエストのインスタンスを簡単に取得するには、コントローラーのコンストラクターまたは制御関数に型宣言 IlluminateHttpRequest を記述する必要があります。現在のリクエストのインスタンスはサービス コンテナから自動的に挿入されます:

<?phpnamespace App\Http\Controllers;use Illuminate\Http\Request;class UserController extends Controller {  public function store (Request $request) {    $name = $request->input('name');  }}

コントローラー メソッドがルートからパラメーターを受け取る必要がある場合は、依存関係注入パラメーターの後に受信するパラメーターを追加する必要があります。たとえば、ルートは次のように定義されます:

Route::put('user/{id}', 'UserController@update');

次に、最初に依存性注入 IlluminateHttpReqeust を宣言し、次にルート パラメーターを次の順序で渡す必要があります:

<?phpnamespace App\Http\Controllers;use Illuminate\Http\Request;class UserController extends Controller {  public function update (Request $request, $id) {    //   }}

基本的なリクエスト情報

IlluminateHttpRequest のインスタンスは、アプリケーション A にさらに多くの情報を提供します。 HTTP リクエストをチェックするメソッド。SymfonyComponentHttpFoundationRequest から継承します。一般的に使用されるメソッドをいくつか示します。

リクエストされた URI を取得する

path メソッドはリクエストされた URI を返します。そのため、リクエストのターゲット アドレスが http://domain.com/foo/bar の場合、path メソッドは戻ります。 foo/ bar:

$uri = $request->path();

is メソッドを使用すると、要求された URI が指定されたパターンと一致することを確認できます。 * 文字をワイルドカードとして使用できます:

if ($request->is('admin/*')) {  //}

リクエストの完全なパスを取得したい場合は、url または fullUrl メソッドを使用できます:

// Without Query String...$url = $request->url();// With Query String...$url = $request->fullUrl();

完全なパスを取得するときに、リクエスト パラメータ情報を追加することもできます。たとえば、リクエストのパス。リクエストのターゲットが http://domain.com/foo の場合、次のメソッドは http://domain.com/foo?bar=baz:

$url = $request->fullUrlWithQuery(['bar' => 'baz']);
を返します。

リクエストの取得方法

methodメソッドはHTTPリクエストのWayを返します。 isMethod メソッドを使用して、http リクエスト メソッドで一致検証を実行することもできます。

$method = $request->method();if ($request->isMethod('post')) {  //}

PSR-7 リクエスト

PSR-7 標準では、PSR を取得する場合のリクエストとレスポンスを含む、http のいくつかのメッセージ インターフェイスが指定されています。 -7 request たとえば、最初にいくつかのサポートライブラリをインストールする必要があります。Laravel は Symfon HTTP Bridge コンポーネントを使用して、典型的な laravel リクエストと応答を PSR-7 互換の実装に変換します。 PSR-7 リクエストを取得するには、ルートまたはコントローラーにヒントを入力します:

composer require symfony/psr-http-message-bridgecomposer require zendframework/zend-diactoros

ルートまたはコントローラーが PSR-7 レスポンス インスタンスを返す場合、それは自動的に Laravel レスポンス インスタンスに変換されます。

入力値を取得する

入力値を取得する

ユーザーの入力値は、IlluminateHttpRequest インスタンスのいくつかのメソッドを通じて簡単に取得できます。ユーザーが使用する HTTP リクエスト メソッドを気にする必要はありません。入力メソッドを使用してすべてのリクエスト メソッドの値を取得します:

use Psr\Http\Message\ServerRequestInterface;Route::get('/', function (ServerRequestInterface $request) {  // });

値がリクエストに存在しない場合は、デフォルト値として返されます:

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

2 番目のパラメータを入力メソッドに渡すこともできます。

フォームが送信されるとき、一部の入力値が配列である場合、 . 演算子を使用してリクエスト内の配列値にアクセスできます:

rrree

JSON リクエストの入力値を取得します

を使用することもできますjson リクエストにアクセスするための入力メソッド。json リクエストが正しいリクエスト ヘッダー Content-Type: application/json で設定されている限り、 . 構文を使用して json 内の配列に深くアクセスできます。入力値が存在します

has メソッドを使用して、リクエストにユーザーからの入力値が含まれているかどうかを判断できます。値が空の文字列でない場合、has メソッドは true を返します:

$name = $request->input('name', 'Sally');

すべての入力値を取得

all メソッドを使用すると、すべてのユーザー入力値を取得できます。これにより、すべてのユーザー値を含む配列が返されます。 :

$name = $request->input('products.0.name');$names = $request->input('products.*.name');

入力値の一部を取得します

Only メソッドまたはExcept メソッドを使用して、入力の一部を取得できます両方のメソッドは、別の配列または動的パラメーターのリストを受け取ります:

$name = $request->input('user.name');

動的プロパティ

IlluminatHttpRequest を使用できます。アプリケーション フォームに名前フィールドがある場合は、インスタンスの動的属性が使用されます。次の方法でリクエストフィールドを取得できます:

if ($request->has('name')) {  //}

動的属性を使用する場合、laravel はルート内のパラメータを取得する前に、リクエストがこの値を含むかどうかを最初に確認します。

古い入力

Laravel では、次のリクエスト中にそのリクエストに対する入力を返します。この機能は、フォーム検証が失敗した場合に特に便利で、以前のリクエストを再利用して自動入力できるようになります。 Laravel の検証サービスを使用する場合、Laravel の組み込みの検証メカニズムが自動的に呼び出すため、手動で呼び出す必要はありません。

セッションへのフラッシュ入力

IlluminateHttpRequest インスタンスの flash メソッドは、現在のリクエストの入力をセッションにフラッシュします。これにより、アプリケーションはユーザーの次のリクエストを受け入れるときにそれを再利用できます:

$input = $request->all();

flashOnly を使用することもできますおよび flashExcept メソッド フラッシュ部分に来て、セッションへの入力を要求します:

$input = $request->only(['username', 'password']);$input = $request->only('username', 'password');$input = $request->except(['credit_card']);$input = $request->except('credit_card');

セッションへのフラッシュ入力とジャンプ

一般的なシナリオは、ユーザーの入力とともに前のページに戻る必要があることです。 withInput チェーン メソッドを使用します:

rrree

古い入力を取得します

古いメソッドを使用して、最後のリクエストによってフラッシュされたユーザー リクエストを取得できます:

$username = $request->old('username');

laravel提供了全局old帮助方法。你也可以在blade模板中使用该方法,如果上次请求未闪存该输入,则会返回null:

<input type="text" name="username" value="{{ old('username') }}">

Cookies

从请求中检索cookie

在laravel中所有的cookie在被创建时都会经过一个认证码进行签证加密,这就意味着laravel会验证客户端对cookie的修改.你可以使用Illuminate\Http\Request实例的cookie方法来获取cookie值:

$value = $request->cookie('name');

在响应中附加一个新的cookie

laravel提供了一个全局的cookie帮助方法用来生成一个Symfony\Component\HttpFoundation\Cookie实例,该实例可以被Illuminate\Http\Response实例的withCookie附加:

$response = new Illuminate\Http\Response('Hello World');$response->withCookie('name', 'value', $minutes);return $response;

你可以使用cookie方法来创建一个长达5年的长cookie,它要求你使用不带参数的cookie帮助方法直接调用forever方法:

$response->withCookie(cookie()->forever('name', 'value'));

文件

获取上传的文件

你可以通过Illuminate\Http\Request的file方法来访问上传的文件。该方法会返回一个Symfony\Component\HttpFoundation\File\UploadedFile类的实例,它继承自SplFileInfo,提供了多种与文件交互的方法:

$file = $request->file('photo');

你可以使用hasFile方法来判断文件在请求中是否存在:

if ($request->hasFile('photo')) {  // }

验证文件是否上传成功

你可以使用isValid方法来验证文件上传的过程中是否出错:

if ($request->file('photo')->isValid()) {  //}

移动上传的文件

你可以使用move方法来将上传的文件从临时目录中迁移到指定的目录中:

$request->file('photo')->move($destinationPath);$request->file('photo')->move($destinationPath, $fileName);

其他文件方法

UploadedFile还有其他许多可用的方法,你可以查看 该类的API文档 来了解更多.

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。