会員登録フォームでアカウント登録しても元の登録画面へ戻ってきてしまいます。コントローラーのアクションにもなぜかアクセスできません。フォームのactionも問題ありません。特にエラーメッセージも表示されずどこに問題があるのか全く検討がつきません。何かヒントが欲しいです。
該当のソースコード
register.blade.php
1@extends('layouts.app') 2 3@section('content') 4 <div class="container"> 5 <div class="row justify-content-center"> 6 <div class="col-md-8"> 7 <div class="card"> 8 <div class="card-header">{{ __('Register') }}</div> 9 10 <div class="card-body"> 11 <form method="POST" action="{{ route('register') }}"> 12 @csrf 13 14 @if (session()->has('fail')) 15 <div style="color: red">登録ができませんでした。時間をあけて、再度お試しください</div> 16 @endif 17 18 <div class="row mb-3"> 19 <label for="email" class="col-md-4 col-form-label text-md-end">{{ __('Email Address') }}</label> 20 21 <div class="col-md-6"> 22 <input id="email" type="email" class="form-control @error('email') is-invalid @enderror" name="email" 23 value="{{ old('email', session('fail.email') ?? '') }}" required autocomplete="email"> 24 <?php session()->forget('fail'); ?> 25 26 @error('email') 27 <span class="invalid-feedback" role="alert"> 28 <strong>{{ $message }}</strong> 29 </span> 30 @enderror 31 </div> 32 </div> 33 34 <div class="row mb-3"> 35 <label for="password" class="col-md-4 col-form-label text-md-end">{{ __('Password') }}</label> 36 37 <div class="col-md-6"> 38 <input id="password" type="password" class="form-control @error('password') is-invalid @enderror" 39 name="password" required autocomplete="new-password"> 40 41 @error('password') 42 <span class="invalid-feedback" role="alert"> 43 <strong>{{ $message }}</strong> 44 </span> 45 @enderror 46 </div> 47 </div> 48 49 <div class="row mb-3"> 50 <label for="password-confirm" 51 class="col-md-4 col-form-label text-md-end">{{ __('Confirm Password') }}</label> 52 53 <div class="col-md-6"> 54 <input id="password-confirm" type="password" class="form-control" name="password_confirmation" 55 required autocomplete="new-password"> 56 </div> 57 </div> 58 59 <div class="row mb-0"> 60 <div class="col-md-6 offset-md-4"> 61 <button type="submit" class="btn btn-primary"> 62 {{ __('Register') }} 63 </button> 64 </div> 65 </div> 66 </form> 67 </div> 68 </div> 69 </div> 70 </div> 71 </div> 72@endsection
atuh.php
1<?php 2 3use App\Http\Controllers\Auth\AuthenticatedSessionController; 4use App\Http\Controllers\Auth\ConfirmablePasswordController; 5use App\Http\Controllers\Auth\EmailVerificationNotificationController; 6use App\Http\Controllers\Auth\EmailVerificationPromptController; 7use App\Http\Controllers\Auth\NewPasswordController; 8use App\Http\Controllers\Auth\PasswordResetLinkController; 9use App\Http\Controllers\Auth\RegisteredUserController; 10use App\Http\Controllers\Auth\VerifyEmailController; 11use Illuminate\Support\Facades\Route; 12 13Route::middleware('guest')->group(function () { 14 Route::get('register', [RegisteredUserController::class, 'create']) 15 ->name('register'); 16 17 Route::post('register', [RegisteredUserController::class, 'store']); 18 19 Route::get('login', [AuthenticatedSessionController::class, 'create']) 20 ->name('login'); 21 22 Route::post('login', [AuthenticatedSessionController::class, 'store']); 23 24 Route::get('forgot-password', [PasswordResetLinkController::class, 'create']) 25 ->name('password.request'); 26 27 Route::post('forgot-password', [PasswordResetLinkController::class, 'store']) 28 ->name('password.email'); 29 30 Route::get('reset-password/{token}', [NewPasswordController::class, 'create']) 31 ->name('password.reset'); 32 33 Route::post('reset-password', [NewPasswordController::class, 'store']) 34 ->name('password.update'); 35}); 36 37Route::middleware('auth')->group(function () { 38 Route::get('verify-email', [EmailVerificationPromptController::class, '__invoke']) 39 ->name('verification.notice'); 40 41 Route::get('verify-email/{id}/{hash}', [VerifyEmailController::class, '__invoke']) 42 ->middleware(['signed', 'throttle:6,1']) 43 ->name('verification.verify'); 44 45 Route::post('email/verification-notification', [EmailVerificationNotificationController::class, 'store']) 46 ->middleware('throttle:6,1') 47 ->name('verification.send'); 48 49 Route::get('confirm-password', [ConfirmablePasswordController::class, 'show']) 50 ->name('password.confirm'); 51 52 Route::post('confirm-password', [ConfirmablePasswordController::class, 'store']); 53 54 Route::post('logout', [AuthenticatedSessionController::class, 'destroy']) 55 ->name('logout'); 56});
RegisteredUserController.php
1<?php 2 3namespace App\Http\Controllers\Auth; 4 5use App\Http\Controllers\Controller; 6use App\Models\User; 7use App\Providers\RouteServiceProvider; 8use Exception; 9use Illuminate\Auth\Events\Registered; 10use Illuminate\Http\Request; 11use Illuminate\Support\Str; 12use Illuminate\Support\Facades\Auth; 13use Illuminate\Support\Facades\Hash; 14use Illuminate\Validation\Rules; 15 16class RegisteredUserController extends Controller 17{ 18 /** 19 * Display the registration view. 20 * 21 * @return \Illuminate\View\View 22 */ 23 public function create() 24 { 25 return view('auth.register'); 26 } 27 28 /** 29 * Handle an incoming registration request. 30 * 31 * @param \Illuminate\Http\Request $request 32 * @return \Illuminate\Http\RedirectResponse 33 * 34 * @throws \Illuminate\Validation\ValidationException 35 */ 36 public function store(Request $request) 37 { 38 $request->validate([ 39 'email' => ['required', 'string', 'email', 'max:255', 'unique:users'], 40 'password' => ['required', 'confirmed', Rules\Password::defaults()], 41 ]); 42 43 try { 44 $i = 0; 45 do { 46 if ($i > 10) { 47 // 登録に失敗したことを知らせ、再度登録することを促す ユーザの入力データをフォームに戻したい 48 throw new Exception(); 49 } 50 $userID = Str::random(15); 51 $i++; 52 } while (User::where('userID', $userID)->exists()); 53 54 $user = User::create([ 55 'email' => $request->email, 56 'password' => Hash::make($request->password), 57 'userID' => $userID, 58 ]); 59 } catch (Exception $e) { 60 $request->session()->put([ 61 'fail' => [ 62 'email' => $request->email, 63 ], 64 ]); 65 return redirect()->route('register'); 66 } 67 68 event(new Registered($user)); 69 70 Auth::login($user); 71 72 return redirect(RouteServiceProvider::HOME); 73 } 74}
試したこと
ルーティングの確認
補足情報(FW/ツールのバージョンなど)
PHP 8.1.1
Laravel 8.79.0
回答1件
あなたの回答
tips
プレビュー