今回はLaravelの「back()」についての記事です。
Laravelにはリダイレクト処理としてredirectヘルパというものが用意されています。
redirectヘルパを使うとリダイレクト処理をすることができますが、その中で直前に開いたページに戻る処理も用意されているのでそれを紹介していきます。
Laravelのリダイレクト処理redirect()について
まずリダイレクト処理の基本は以下のような形です。
return redirect('/test/redirect');
「redirect()」の引数に相対パスを指定することでそのページへリダイレクトされるようになります。
もちろん別のサイトにリダイレクトさせたい場合は以下のようにすることで可能です。
return redirect('https://test.com');
以下記事でリダイレクト処理についてもう少し詳しく解説していますので参考にしてみてください。
直前のページに戻る処理back()
続いて本題の「back()」についてです。
基本的な書き方は以下になります。
return back();
これで直前のページに戻ることになります。
利用するケースは、コントローラー内で何かの条件で次のページに遷移させない時に使うかなと思います。
直前のinputの情報を保持したい場合
このback()の処理は、フォームの処理などに使う場合が多いです。
その際にback()だけだと、フォームに入力していたデータは消えてしまいます。
それを回避するには以下のように書きます。
return back()->withInput();
こうすることで直前で入力されていた情報が保持されたまま直前のページへリダイレクトされます。
セッションにデータを渡して直前のページに戻すことも可能
直前のページにセッションとしてデータを渡すこともできます。
return back()->with('data', 'セッションデータです');
こうすることでblade側でsessionとして使うことができるようになります。
以下がsessionのデータ存在チェックをしてそのまま表示させている例です。
@if (session('data'))
{{ session('data') }}
@endif
//ファサードで存在チェックする場合
@if (Session::has('data'))
{{ session('data') }}
@endif
存在チェックをしていないとセッションがない場合にエラーになるので注意が必要です。
コントローラー内の処理でユーザーの入力内容によっては次の処理に進めさせないようにすることがあるのでその場合は「back()」を使いましょう。
エンジニアにおすすめ書籍
エンジニアになりたて、これから勉強を深めていきたいという方におすすめの書籍はこちら!