ネビ活 | ネットビジネス生活

ネットxお金のスキルを作り、未来永劫豊かに暮らす事を目指すサイト

Laravelでログイン後、元いた同じページにリダイレクトバックする方法

投稿日:

今回は、Laravelサイトでログイン画面を表示させた後、元いたページにリダイレクトバックする方法を解説します。

 

例えば、こんなシチュエーション。

知恵袋サイトを作ってるとして、閲覧者が回答フォームに入力するには、
ログイン必須にしたいとします。

 

なので↑こんな感じの入力フォームが表示されるのはログイン後だけにして、
ログインしてない時は↓

こんな感じにボタンだけ表示し、ボタンをクリックすると、ログイン画面に飛び、ログインが完了すると、このページに戻ってきて、入力フォームが表示されるようにしたいとします。

この特定ページ→ログイン画面→元いたページとリダイレクトバックをLaravelサイトで実装する方法を解説します。

 

Laravelって稼げるの?独学?スクール?高給を稼ぐためにどうするべきか教えます。

Laravelでログイン後、元いた同じページにリダイレクトバックする方法

まず、全体の手順としては、

  1. 現在URLの取得コードをコントローラーに追記
  2. ブレードに現在URL送信フォームを設置
  3. リダイレクト専用コントローラーの作成
  4. ルートにmiddleware('auth')設定

という手順になります。

 

では、今のフォーラムサイトを例に解説していきます。

まず、app\Http\Controllersフォルダに行き、
このページを表示するためのコントローラーを開きます。

そして、ページの表示を担当してるfunction に

コピーしました

コピー

$currenturl = \Request::getRequestUri(); 

という一行を加えます。

これは現在のURLを取得して、$currenturlという変数に代入するという事です。

 

そして、$currenturlをblade.phpに渡すために、同じfunctionの{ }内のreturn view()の後ろに

コピーしました

コピー

->with('currenturl',$currenturl)

というコードを追記してください。(最後に ; を忘れないでくださいね。)

 

これで、まず例えば、abc.com/post123というページにアクセスがあったなら、
そのページのURLが$currenturlに代入(仮保存)されます。これをのちのリダイレクトバックに使います。

 

次にresources\viewsフォルダに行き、
同ページ(隠したいブツがあるページ)用のblade.phpを開きます。

隠したい部分のHTMLを、@auth と@endauthでサンドイッチします。

私の場合は、回答用フォームがあるdivを丸ごとサンドイッチしました。

これで、ログインしてない時は、フォームが表示されないようになりました。

 

今度は逆にログインしてないユーザーにだけ、「回答する(Answer this question)」ボタンを表示します。

今度は、ログインユーザーには表示したくないので、

このAnswer this questionボタンには、@guest @endguest でサンドイッチします。

で、実はこのボタン、フォームになってます。「Answer this questionボタン」はフォームのsubmitボタンになっていて、ボタンを押すと、現在のページのURL($currenturl)がフォーム送信されるようになってます。

コピーしました

コピー

@guest
<form action="/commentlogin" method="post">
@csrf
<input type="hidden" name="currenturl" value="$currenturl">
<input type="submit" value="投稿する">
</form>
@endguest 

form で /commentloginというアドレスに現在のURLを送信します。

 

この後、リダイレクト専用のコントローラーを作ります。

 

リダイレクト専用コントローラーの作成とミドルウェアの設定

では、新しいコントローラーを作るので、ターミナル(コマンドプロンプト)を開いて、

cdでLaravelプロジェクトフォルダに移動後、

php artisan make:controller RedirectbackController

と入力、Enterしてください。

 

そして、作成されたRedirectbackController.phpを開き、以下を追記します。

コピーしました

コピー

public function direct ($currenturl){
   return redirect($currenturl);
}

これで、ブレードから送信された$currenturl(現在のURL)を受け取り、ログインが完了したら、そのアドレスにリダイレクトバックするわけです。

 

次に、ルート設定をします。

routesフォルダのweb.phpを開いてください。

上の一文を追記してください。

コピーしました

コピー

Route::post('/commentlogin', 'RedirectbackController@direct')->middleware('auth');

 

説明すると、まず、↓このボタンが押されると、

ブレードから/commentloginに現在のURLが送信されます。それをweb.phpからリダイレクト用のコントローラーに渡すわけですが、そこでmiddleware('auth')をかけてますから、ログイン画面が自動的に表示されます。

ログインが完了すると、リダイレクト用コントローラーに移り、元のURLにリダイレクトされて、コメント入力フォームが表示されてるというわけです。

これで完成です。
無事動きましたか?

 

ところで、あなたがLaravelを学んでる理由ってなんですか?

稼げるって聞いたから?

どれくらい上達すれば稼げるのか?本当にそんな高給を稼げるのかの現実を知ってますか?

詳しくは下の記事に本音の裏事情を書いてるので参考にしてくださいね。

Laravelって稼げるの?独学?スクール?高給を稼ぐためにどうするべきか教えます。

  • この記事を書いた人

Neby

本を毎日多読しつつ、資産運用、プログラミング、心理学、ネットビジネススキルを猛向上中。貧富の差が広がる5年後、10年後に安心生活を送るためのお金のリテラシー、スキル、資産を一緒に作っていきましょう。

-PHP Laravel入門

Copyright© ネビ活 | ネットビジネス生活 , 2020 All Rights Reserved.