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

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

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

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

Q&A

解決済

1回答

3982閲覧

laravelでRoute [user.logout] not defined. になってしまう

himuro_charly

総合スコア1

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

0グッド

0クリップ

投稿2021/08/26 05:14

編集2021/08/26 12:00

前提・実現したいこと

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の

<li><a href="{{ route('user.logout') }}">ログアウト</a></li> を削除することで、トップ画面を表示できるようになります。 なぜログアウトのrouteだけnot definedになるのかがわかりません。

該当のソースコード

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

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

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

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

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

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

kawa_kawawaka

2021/08/26 07:17

`php artisan route:list` の出力結果はどんな感じでしょうか??>< 質問に追加していただけると幸いです^^
himuro_charly

2021/08/26 08:43

kawa_kawawaka様ご助力ありがとうございます! 質問にroute:listの出力結果を追記いたしました。
kawa_kawawaka

2021/08/26 10:13 編集

そもそもrouteに登録できてないようなので、`web.php` の中身も全て記載すると答えやすいかもしれません><!!
himuro_charly

2021/08/26 11:58

何度も申し訳ございません! 修正いたしました。
kawa_kawawaka

2021/08/26 13:03

//ログアウト機能 Route:get('/logout', 'App\Http\Controllers\LogoutController@getLogout) -> name('user.logout'); この場合はどうなりますか?
himuro_charly

2021/08/26 15:04

教えていただいたやり方でroute通りました! ありがとうございます! なぜ最初の書き方でrouteに登録されないかが分かっていなので、もっと基礎的な勉強を重ねようと思います。 ベストアンサーにさせていただきたいので、差し支えなければ回答の方に上記と同じことを載せていただければありがたいです。 ありがとうございました。
kawa_kawawaka

2021/08/27 03:44

ご丁寧にありがとうございます^^
guest

回答1

0

ベストアンサー

//ログアウト機能
Route:get('/logout', 'App\Http\Controllers\LogoutController@getLogout) -> name('user.logout');

この場合はどうなりますか?

投稿2021/08/26 23:35

kawa_kawawaka

総合スコア71

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問