Laravelのアクションのカッコの中の「Request $request」を調べた
905 回閲覧されました
みなさんこんにちは、jonioです。
Laravelのビューにフォームがある時にアクションで「Request $request」を見かけますが「これは何だろう?」と思いながらコードを書いていました。
コードは書けるけどモヤモヤした感覚がいつもありました。
この状態は何となくコードを書いていて理解していない悪い事だと思い調べた内容を記事にしました。
調べた内容なので間違っているかもしれませんがご了承下さい。
LaravelでのRequestとは何か?
Requestは図で説明すると↓になります。
サイト閲覧者の「おすしのページを見たい」がRequestになります。
Requestが出るとサーバー(パソコン)からLaravelに「おすしのページを見せて下さい」と連絡が行ってLaravelで処理をして「おすしのページ」をサーバーに渡してサーバーがサイト閲覧者におすしのページを表示します。
おすしのページを表示するのをレスポンスと言います。
Laravelの処理が何かを知りたい方は↓を読んで下さい。
コントローラーのアクションに書くRequestもこれに関係しています。
LaravelのRequest $requestとは?
では本題のコントローラーのアクションのカッコの中のRequest $requestが何かです。
Request $requestを使う時はbladeにformタグがある時ですがその時のコントローラーのアクションは例えば↓になっています。
↑のコードの1行目のカッコの中の「Request」は「サイト閲覧者がフォームに入力したデータを受け取る」という意味です。
例
例えば記事を投稿するページでフォームに内容を書いたとします。
↑の「件名」・「本文」・「画像」にサイト閲覧者が入力した内容をコントローラーが受け取ってデータベースに保存しますが受け取るのがRequestです。
これでRequestが何かが分かりましたが次は「Request $request」の$requestの説明です。
$requestとは?
$requestについて↓のコードで考えます。
10行目のRequestですが5行目の「use Illuminate\Http\Request;」を省略した書き方です。
これがあるとフォームに書いた内容を受け取る事ができるのは先程説明しました。
「$request」はRequestを変数$requestとして使うという意味になります。
もう一度↓のページについて説明します。
↑を表示するコードは↓です。
フォームに書いた内容をデータベースに保存するコントローラーのコードは↓です。
コントローラーのコードの4行目を見て欲しいのですが「$request->title」に関してtitleとビューのコードの21行目のname属性(name=”title”)をそろえる事でフォームに入力した「件名」の内容を受け取る事ができます。
コントローラーの5行目の「$request->body(本文)」・7行目〜12行目のif文の中の$requestに関しても同様です。
Request $requestは他の変数でもいい
「Request $request」ですが他の変数を使う事もできます。
例として↓のビューのコードで見ていきます。
8行目の「<a href=”{{route(‘post.show’,$post)}}”>」の「$post」ですがこれとコントローラーのアクションの「Request $request」の部分を「Post $post」にする事でビューからコントローラーに情報を渡す事ができます。(正しいリンク先に移動する事ができます)
この時のコントローラーのアクションは↓です。
先ほどRequestを使った時は5行目の「use Illuminate\Http\Request;」が必要でしたが今回のPostはPostモデルで6行目が必要になります。
「<a href=”{{route(‘post.show’,$post)}}”>」の$postと「Post $post」の「$post」は合わせます。
と言った感じです。