質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

Q&A

解決済

2回答

2718閲覧

Laravel Auth ログイン後のリダイレクト先を動的に変更したい。

scamee

総合スコア21

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

0グッド

0クリップ

投稿2022/03/17 21:49

編集2022/03/18 09:09

閲覧ありがとうございます。
Laravelの初学者です。
現在、Laravelの自作アプリケーションを作成しながら勉強をしています。

環境

  • ハードウェア環境
項目情報
OSmacOS Monterey(12.1)
ハードウェアMacBook Air
チップApple M1
  • ソフトウェア環境
項目情報
PHP バージョン8.0
Laravel バージョン8.75
MySQLバージョン5.7.34
  • 開発環境
項目情報
言語html,css(bootstrap5),js,php(Laravel8)
エディターvscode
ログイン機能Laravel/ui

やりたいこと

Laravel Auth ログイン後のリダイレクト先を動的に変更したい。
参考:Laravel Auth ログイン後のリダイレクト先をデフォルトから変更する リメイク編

例) 下のようなことがやりたいのですが、エラーが出てできません。

php

1$date = Carbon::now()->format('Y-m-j') 2public const HOME = '/show' . $date;

よろしくお願いします。

本体

php

1<?php 2 3namespace App\Http\Controllers\Auth; 4 5use App\Http\Controllers\Controller; 6use App\Providers\RouteServiceProvider; 7use Illuminate\Foundation\Auth\AuthenticatesUsers; 8use App\Facades\Calendar; 9 10class LoginController extends Controller 11{ 12 13 14 use AuthenticatesUsers; 15 16 /** 17 * Where to redirect users after login. 18 * 19 * @var string 20 */ 21 protected $redirectTo = RouteServiceProvider::HOME; 22 23 /** 24 * Create a new controller instance. 25 * 26 * @return void 27 */ 28 public function __construct() 29 { 30 $this->middleware('guest')->except('logout'); 31 } 32 33 34}

php

1<?php 2 3namespace App\Providers; 4 5use Illuminate\Cache\RateLimiting\Limit; 6use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider; 7use Illuminate\Http\Request; 8use Illuminate\Support\Facades\RateLimiter; 9use Illuminate\Support\Facades\Route; 10 11class RouteServiceProvider extends ServiceProvider 12{ 13 /** 14 * The path to the "home" route for your application. 15 * 16 * This is used by Laravel authentication to redirect users after login. 17 * 18 * @var string 19 */ 20 public const HOME = '/show'; 21 22 /** 23 * The controller namespace for the application. 24 * 25 * When present, controller route declarations will automatically be prefixed with this namespace. 26 * 27 * @var string|null 28 */ 29 // protected $namespace = 'App\\Http\\Controllers'; 30 31 /** 32 * Define your route model bindings, pattern filters, etc. 33 * 34 * @return void 35 */ 36 public function boot() 37 { 38 $this->configureRateLimiting(); 39 40 $this->routes(function () { 41 Route::prefix('api') 42 ->middleware('api') 43 ->namespace($this->namespace) 44 ->group(base_path('routes/api.php')); 45 46 Route::middleware('web') 47 ->namespace($this->namespace) 48 ->group(base_path('routes/web.php')); 49 50 Route::pattern('date', '^[0-9]{4}-[0-9]{2}-[0-9]{1,2}$'); 51 }); 52 } 53 54 /** 55 * Configure the rate limiters for the application. 56 * 57 * @return void 58 */ 59 protected function configureRateLimiting() 60 { 61 RateLimiter::for('api', function (Request $request) { 62 return Limit::perMinute(60)->by(optional($request->user())->id ?: $request->ip()); 63 }); 64 } 65} 66

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2022/03/17 23:03 編集

どのようなエラーでしょう。 HOMEという定数でなくても良いなら幾らでも方法はありそうに思います。
phper.k

2022/03/18 04:51 編集

使用している ui のバージョンを記載してください
scamee

2022/03/18 08:40

使用している ui のバージョンは "laravel/ui": "^3.4" です。
scamee

2022/03/18 08:44

エラーですが、 「Too few arguments to function App\Http\Controllers\HomeController::show(), 0 passed in /Applications/MAMP/htdocs/Prototype_diary/vendor/laravel/framework/src/Illuminate/Routing/Controller.php on line 54 and exactly 1 expected」 です。 web.php 「Route::get('/show/{date?}', [HomeController::class, 'show'])->where('date', '^[0-9]{4}-[0-9]{2}-[0-9]{1,2}$')->name('show');」 コントローラー 「public function show($date){....}」
guest

回答2

0

自己解決

皆様、ご回答ありがとうございました。

いろいろ解決方法を悩みましたが、
URLパラメータが受け取れなかった時に、show/{date}にredirectするRouteを新たに作成する。
という形で自己解決しました。

php:web.php

1Route::group( 2 ['middleware' => 'auth'], 3 function () { 4 Route::get('/show', [HomeController::class, 'index'])->name('home'); 5 Route::get('/show/{date}', [HomeController::class, 'show'])->name('show'); 6} 7)

php:controller

1/** 2 * Show the application dashboard. 3 * 4 * @return showメソッド(date->now) 5 */ 6 public function index() 7 { 8 $date = Calendar::getNow(); 9 10 return redirect()->route('show', ['date' => $date]); 11 }

投稿2022/03/24 09:23

scamee

総合スコア21

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

app/Http/Controllers/Auth/LoginController.phpredirectTo() メソッドを追加します。

php

1<?php 2 3namespace App\Http\Controllers\Auth; 4 5use App\Http\Controllers\Controller; 6use App\Providers\RouteServiceProvider; 7use Carbon\Carbon; 8use Illuminate\Foundation\Auth\AuthenticatesUsers; 9 10class LoginController extends Controller 11{ 12 /* 13 |-------------------------------------------------------------------------- 14 | Login Controller 15 |-------------------------------------------------------------------------- 16 | 17 | This controller handles authenticating users for the application and 18 | redirecting them to your home screen. The controller uses a trait 19 | to conveniently provide its functionality to your applications. 20 | 21 */ 22 23 use AuthenticatesUsers; 24 25 /** 26 * Where to redirect users after login. 27 * 28 * @var string 29 */ 30 protected $redirectTo = RouteServiceProvider::HOME; 31 32 /** 33 * Create a new controller instance. 34 * 35 * @return void 36 */ 37 public function __construct() 38 { 39 $this->middleware('guest')->except('logout'); 40 } 41 42 /** 43 * @return string 44 */ 45 public function redirectTo() 46 { 47 $date = Carbon::now()->format('Y-m-j'); 48 return '/show/' . $date; 49 } 50}

投稿2022/03/18 04:55

phper.k

総合スコア3923

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

scamee

2022/03/18 09:43

だめでした。。 「Too few arguments to function App\Http\Controllers\HomeController::show(), 0 passed in /Applications/MAMP/htdocs/Prototype_diary/vendor/laravel/framework/src/Illuminate/Routing/Controller.php on line 54 and exactly 1 expected」 同じエラーが出ました。
phper.k

2022/03/18 15:50

それはな、質問文に書かれていないコードで出ているエラーじゃ
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問