🗂
Laravelでのリダイレクト方法まとめ
Laravelでのリダイレクト方法まとめ
Laravelでは、コントローラやその他の場所から簡単にリダイレクトを行うためのヘルパー関数が用意されています。この記事では、よく使うリダイレクトのパターンをサンプルコード付きで紹介します。
名前付きルートへリダイレクト
// 名前付きルートへリダイレクト
return redirect()->route('dashboard');
-
route('dashboard')
のように、ルートの名前を指定してリダイレクトします。 - ルートのURLが変更になっても、名前で管理していればコードの修正範囲が最小限に抑えられるメリットがあります。
ルートパラメータ付きでリダイレクト
// ルートパラメータ付きでリダイレクト
return redirect()->route('profile', ['id' => $user->id]);
-
route('profile', ['id' => $user->id])
のように、ルートパラメータを渡すことができます。 - たとえば
/profile/{id}
のようにパラメータを定義しているルートに対して動的に値を渡す場合に便利です。
入力データを保持したまま前のページへリダイレクト
// 入力データを保持したまま前のページへリダイレクト(フォームのバリデーションで便利)
return back()->withInput();
-
back()
はユーザーが直前に見ていたページへ戻ります。 -
withInput()
を組み合わせると、フォームのバリデーションエラー時などに、入力内容を保持したまま戻すことができます。 - バリデーション失敗時にフォームが初期化されないようにするケースでよく使います。
外部URLへリダイレクト
// 外部URLへリダイレクト
return redirect()->away('https://google.com');
-
redirect()->away()
を使うと、外部サイトへのリダイレクトができます。 -
redirect()->to()
との違いは、away()
はホスト名が異なる外部サイトへのリダイレクトに特化している点です。
セッションのフラッシュメッセージを設定してリダイレクト
// セッションのフラッシュメッセージを設定してリダイレクト
return redirect('/dashboard')->with('status', 'Profile updated!');
-
with('status', 'Profile updated!')
で、セッションに一時的なメッセージを保存してからリダイレクトします。 - リダイレクト先で
session('status')
などを使うと、一度きりのフラッシュメッセージとして利用できます。
まとめ
Laravelのリダイレクト機能はとても便利で、状況に応じてさまざまな方法が用意されています。
- 名前付きルートで管理するとURLが変わっても安全
- バリデーション失敗時には
back()->withInput()
- 外部サイトへは
redirect()->away()
- フラッシュメッセージの活用でユーザーにわかりやすいフィードバック
参考記事
Discussion