こんにちは。ゆたんぽです。
今回はLaravelで「ログアウト後の遷移先」を指定のページに変更したい・・・!
という件についての備忘録がてら。です。何かの参考になれば。
● 動作環境
Laravel5.8
● 結論
自作のメソッド(コントローラー)とルートを作成し、ログアウトボタンを押下した際などに、そのメソッドが発火する。
という形で(とりあえず)いきたいと思う。
なお、 Laravel5.8にデフォルトで用意されている認証(Auth)機能も使う。
やり方
※前提として、 Laravelプロジェクトを作成済みであり、「php artisan make:auth」にてデフォルトの認証機能を使用しているものとします。
① メソッド(コントローラー内に)の作成。
今回はコントローラーのファイル名を「TestController.php」としています
【 TestController.php 】
class TestController extends Controller {
public function logout(){ ★ ログアウト用のメソッドを作成
Auth::logout(); ★ Laravelの機能の中の「Auth::logout()」を使います
return redirect('/welcome'); ★ 指定のページにリダイレクト(これ用のルートも必要)
}
② ルートの作成
【 web.php 】
// ウェルカムページ用のViewがあるとして。
Route::get('/welcome', function () {
return view('welcome'); //welcome.blade.php(View)を呼び出しますよ。というルート
});
// ログインしている場合のルート
Route::group(['middleware' => 'auth'], function(){
Route::get('/logout', 'TestController@logout')->name('logout'); ★ このルートを追加
}
Route::get('/logout', 'TestController@logout')->name('logout');
という一文を「web.php」の、Authミドルウェア内に追加します。
一応、解説もしておきます。
1:「Route::get」・・・GET通信で、「'/logout'」というアクセスをした・された場合
2:「'TestController@logout'」・・・TestController.phpのlogoutメソッドを呼び出す。
3:「name('logout');」・・・この一連の処理を、例えばViewなどで「route('logout')」として呼び出せるように設定。
といった感じです。
③ View(テンプレート)に追加
あとは、ログアウトボタンにさっきのルートの「name()」の中身を追加していきます。
【 Viewファイル(〇〇.blade.php) 】
// ログアウト用のリンク(ボタン)を用意する
<a href="{{ route('logout') }}" > ログアウト </a>
aタグの遷移先に、先ほど作った「logout」というルートを呼び出すように設定して完了です!!
お疲れ様でした〜!
やり方さえ分かれば簡単だにゃ。
正直、この方法が正しいのかは分からないんだけどね。