現在独学でLaravelを使用し、簡単な掲示板を作成しています。
掲示板を作成していくなかで、view()とredirect()の使い分けについて紛らわしいなと感じたので,備忘を兼ねて記事を投稿させていただきます。
そもそもview()とredirect()ってなに?
フロントの画面からフォームでデータが送信されたときに
LaravelではコントローラーでPOSTやGETのリクエストを受け取り、データの保存やリストの取得などの処理をします。
その処理の後、view側に処理したデータを渡す際に使うのがview()とredirect()です。
view()について
サンプルコード↓↓
return view('home', compact('comments'));
ものすごく簡素化していうとGETの時はview()を使う!!以上!!!笑
もう少し丁寧に説明すると
まず上記のサンプルコードの記載の
第一引数の 'home' は、viewのファイル名を記載しています。
そして、第二引数の compact('comments') はコントローラー内に記述している処理が入った変数をcompact()内に記述し、viewファイルで使用できるように記述をしています。
ビューファイルへの遷移と、その際に使用したいデータを一緒に渡しているんですね〜
redirect()について
サンプルコード↓↓
return redirect(route('home'));
はい!こちらはPOSTの時はredirect()を使う!!以上!
ちゃんと説明します。。。
redirect()はフォーム送信などのRoute::post()で呼び出すメソッド内に記述します。
上記のサンプルコードの記載の
第一引数の 'home' は、routes/web.phpのルーティングでルートに名前を付けて、その名前(home)を指定します。
なので、ファイルを直接呼び出しているviewとは呼び出し方にも違いがあります。
また使用例としては、POSTの際やセッションを保持させてエラー情報を付加させたり、明示的にステータスコードを指定するなどの実装パターンも可能です。
最後に
色々と記載しましたが、とりあえず!!
GETの時はview()
POSTの時はredirect()
このパターンを理解して、そこから引数の付与等で出来ることを追加で学習していければいいかな?と思いました。
まだまだ僕も知識が浅いので、今後使用していく中でさらに理解を深めていければと思います!
最後までご覧いただきありがとうございました!