Laravelを使ったWebアプリケーション開発において、リダイレクトは非常に重要な機能です。今回は、Laravelでパラメータ付きリダイレクトを実現する方法について、中級者向けに解説しますが、初学者にもわかりやすく説明していきます。

環境

本記事で紹介するコードは、Laravelのバージョン7.xで動作することが確認しています。

詳細

Laravelでは、リダイレクト処理を簡単に実装できるようにいくつかのヘルパー関数が用意されています。この記事では、パラメータ付きリダイレクトを行うための redirect() ヘルパー関数について説明します。

まずは、基本的なリダイレクト処理のコード例を見てみましょう。

public function redirectToHome()
{
    return redirect('/home');
}

上記のコードでは、/home というURLへのリダイレクトが行われます。しかし、これにパラメータを付け加える場合、redirect() 関数に引数として連想配列を渡すことで実現できます。以下に、パラメータ付きリダイレクトのコード例を示します。

public function redirectToProfile($id)
{
    return redirect('/profile')->with('id', $id);
}

このコードでは、/profile というURLへリダイレクトする際に、id という名前のパラメータを付与しています。リダイレクト先のルートやコントローラで、このパラメータを取得するには、session() 関数を利用します。以下に、パラメータの取得方法を示します。

public function showProfile(Request $request)
{
    $id = $request->session()->get('id');
    // ...
}

このようにして、リダイレクト先でパラメータを取得し、処理を実行することができます。以上が、Laravelでパラメータ付きリダイレクトを実現する方法です。これを利用することで、柔軟なリダイレクト処理を実現できます。

また、複数のパラメータを付与する場合は、with() 関数を連続して使用することができます。例えば、idname という2つのパラメータをリダイレクト先に渡す場合は、以下のように記述します。

public function redirectToProfile($id, $name)
{
    return redirect('/profile')->with('id', $id)->with('name', $name);
}

リダイレクト先で複数のパラメータを取得する場合も、session() 関数を利用して取得できます。

public function showProfile(Request $request)
{
    $id = $request->session()->get('id');
    $name = $request->session()->get('name');
    return view('profile', ['id' => $id, 'name' => $name]);
}

上記のコードでは、idname という変数を profile というビューに渡しています。これにより、ビューで id と name の値を表示することができます。

ビュー側(profile.blade.php など)では、以下のようにデータを表示できます。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Profile</title>
</head>
<body>
    <h1>User Profile</h1>
    <p>ID: {{ $id }}</p>
    <p>Name: {{ $name }}</p>
</body>
</html>

このように、{{ $変数名 }} の形式でデータを表示することができます。これで、リダイレクト先で取得したパラメータをビューで表示する方法がわかりました。

この記事では、Laravelでパラメータ付きリダイレクトを実現し、リダイレクト先でパラメータを取得しビューで表示する方法を解説しました。この知識を活用して、より柔軟なリダイレクト処理を実現してください。

おすすめの記事