前提・実現したいこと
laravelで自作のログアウト機能を実装したいです
発生している問題・エラーメッセージ
Route [user.logout] not defined. (View: /Applications/MAMP/htdocs/jalloy_file/resources/views/customer/index.blade.php)
単純にログアウト機能で普通にルートを作成しようとすると、not definedになってしまいます。
nameでルートの名前をつけてはいるのですが、他のルートとは違ってnot definedになります。
また、http://127.0.0.1:8000/のトップ画面(index.blade.php)でaタグでログアウト機能を表示しているからか、http://127.0.0.1:8000/でページを開こうとすると、not definedになります。
しかし、index.blade.phpの
該当のソースコード
web.php
use Illuminate\Support\Facades\Route; use App\Http\Controllers\Controller; use App\Http\Controllers\RegisterController; use App\Http\Controllers\LoginController; use App\Http\Controllers\LogoutController; use App\Http\Controllers\CustomerController; //トップページ Route::get('/', 'App\Http\Controllers\CustomerController@index'); //フォーム入力ページ(フォームトップページ) Route::get('/contact', 'App\Http\Controllers\ContactController@contact_top') -> name('contact.top'); //確認ページ Route::post('/contact/confirm', 'App\Http\Controllers\ContactController@confirm') -> name('contact.confirm'); //送信完了ページ Route::post('/contact/thanks', 'App\Http\Controllers\ContactController@send') -> name('contact.send'); //新規ユーザー登録 Route::get('/register', 'App\Http\Controllers\RegisterController@register') -> name('register.user'); Route::post('/create', 'App\Http\Controllers\RegisterController@create') -> name('register.create'); //ログイン Route::get('/login', 'App\Http\Controllers\LoginController@login') -> name('login.user'); Route::post('/login_user', 'App\Http\Controllers\LoginController@login_user') -> name('login.create'); //ログアウト機能 Route::get('/logout',[ 'uses' => 'App\Http\Controllers\LogoutController@getLogout', 'as' => 'user.logout' ]);
index.blade.php
<header> <div class = "company-name"> <h2>Jalloy</h2> @if(session('logged_message')) <p>{{session('logged_message')}}</p> @endif @if(Auth::check()) <li><a href="{{ route('user.logout') }}">ログアウト</a></li> @endif <div class = "enter-button"> <a class = "register-button" href="{{route('register.user')}}">新規会員登録</a> <a class = "register-button" href="{{route('login.user')}}">ログイン</a> </div> </div> </header>
LogoutController.php
namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; class LogoutController extends Controller { public function getLogout(){ Auth::logout(); return redirect()->route('login.user'); } }
php artisan route:listの結果は以下になります
+--------+----------+-----------------+-----------------------------+----------------------------------------------------+------------+ | Domain | Method | URI | Name | Action | Middleware | +--------+----------+-----------------+-----------------------------+----------------------------------------------------+------------+ | | GET|HEAD | / | generated::VTdxw3AoE6i1sxUl | App\Http\Controllers\CustomerController@index | web | | | GET|HEAD | api/user | generated::JckwSXsWFxdD2V82 | Closure | api | | | | | | | auth:api | | | GET|HEAD | contact | contact.top | App\Http\Controllers\ContactController@contact_top | web | | | POST | contact/confirm | contact.confirm | App\Http\Controllers\ContactController@confirm | web | | | POST | contact/thanks | contact.send | App\Http\Controllers\ContactController@send | web | | | POST | create | register.create | App\Http\Controllers\RegisterController@create | web | | | GET|HEAD | login | login.user | App\Http\Controllers\LoginController@login | web | | | POST | login_user | login.create | App\Http\Controllers\LoginController@login_user | web | | | GET|HEAD | mypage/{id} | mypage | App\Http\Controllers\MypageController@get_user | web | | | | | | | auth | | | GET|HEAD | register | register.user | App\Http\Controllers\RegisterController@register | web | +--------+----------+-----------------+-----------------------------+----------------------------------------------------+------------+
試したこと
authの使い方が原因だと思い、一度authを全て削除してログアウト機能のためのルートとコントローラーとビューを作成しましたが、同じくRoute [user.logout] not defined.エラーが出ました。
ご教授お願いいたします。
補足情報(FW/ツールのバージョンなど)
Laravel Framework 8.54.0
回答1件
あなたの回答
tips
プレビュー