0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Laravel8:ログイン後にユーザーごとのページ(マイページ)にリダイレクトさせる

Posted at

前提

PHP7
Laravel8
Jetstream
を導入済み

やりたいこと

jetstreamのログイン機能でログインしたあと、各ユーザーのIDごとのページにリダイレクトさせたい。

準備

RouteServiceProviderの「HOME=◯◯」の部分にリダイレクトさせたいURLを入れる。
このとき、◯◯の部分は第2引数を持てないのでここでは一旦「redirects」というアドレスに飛ばして、その後パラメータ付きのURLに遷移させる。

app/Providers/RouteServiceProvider.php
class RouteServiceProvider extends ServiceProvider
{
    /**
     * The path to the "home" route for your application.
     *
     * This is used by Laravel authentication to redirect users after login.
     *
     * @var string
     */
    public const HOME = 'redirects'; //ホーム画面としてリダイレクトしたいアドレスに変更

ルーティング。ここでは関数indexを立ち上げる。

routes/web.php
use App\Http\Controllers\RecordUsersController;
// ユーザー投稿の一覧表示画面
Route::get('/record/user/{user_id}', [RecordUsersController::class, 'show_by_user'])->name('show_by_user_record');s

use App\Http\Controllers\Auth\LoginController;
Route::post('logout',[LoginController::class, 'logout'])->name('logout');
Route::get('redirects',[LoginController::class, 'index']);//追記

ログイン後のリダイレクト先を指定する。

app/Http/Controllers/Auth/LoginController.php
<?php

namespace App\Http\Controllers\Auth;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use App\Models\Record; 
use App\Models\User;

class LoginController extends Controller
{
    public function index(Request $request)
    {
        $user = Auth::user();
        return redirect(route('show_by_user_record',
    [
        'user_id' => $user->id
    ]));
    }

これでログイン後はマイページにリダイレクトされるようになった。

困ったこと

下記エラーが表示されてなかなか進めなかった。

Illuminate\Routing\Exceptions\UrlGenerationException
Missing required parameter for [Route: show_by_user_record] [URI: record/user/{user_id}] [Missing parameter: user_id].

エラーが出ているときのLoginController

/app/Http/Controllers/Auth/LoginController.php
<?php

namespace App\Http\Controllers\Auth;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use App\Models\Record; 
use App\Models\User;

class LoginController extends Controller
{
    public function index(Request $request)
    {
        return redirect(route('show_by_user_record'));
    }

「/record/user/{user_id}」のパラメータにどうやって値を渡せばいいのかわかなくてハマった。
「$user = Auth::user();」がないとユーザー情報が渡せないことになかなか気づかなかった。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?