2017-04-04 26 views
2

カートの商品ページを持っています。商品をカートに入れるボタンをクリックすると、ログインページにリダイレクトされます。Laravel:ログイン後にユーザーを同じページにリダイレクト

ログインに成功した後、ユーザーを同じ商品ページに再度送り返す必要があります。

私はログインコントローラで次の方法を使用しました。

しかし、実際には私が望むやり方ではありません。 は、それが再びインデックスページにリダイレクトする手段として、私はreturn redirect()->back(); also..butが問題問題を解決するためにどのように

if (auth()->attempt(array('email' => $request->input('email'), 
      'password' => $request->input('password')))){ 
if(Auth::user()->name == 'Admin'){ 
       return redirect()->to('home'); 
      } 
      else{ 
      //  return redirect()->back(); 
       return redirect()->intended('/'); 
      } 
    } 

を解決していない使用していますか?

+0

return redirect() - > back()は機能しませんでしたか? –

+0

これはうまくいきません – User57

答えて

5

この場合、back()intended()は機能しません。

最後の製品ページをセッションに保存できます。非常に簡単な例:その後、

session(['last_product_page_id' => $product->id]); 

、ログイン後にユーザーをリダイレクトするために、このデータを使用します。

if (session()->has('last_product_page_id')) { 
    return redirect()->route('product', session('last_product_page_id')); 
} 
+3

これはこの回答の範囲外になるかもしれませんが、なぜ 'back()'や 'intended()'がうまくいかないのか説明してください。 – jaysingkar

0

はMezeninソリューションは右ですが、私はそれを他の方法で解決するかもしれませ。私は最近のファイルディレクトリに基づいて解決策を与えてLaravel 5.4 ..I'mを使用していたよう

は私が内部AuthenticateUsers形質であるshowLoginFromコントローラを変更しました。..

(私は解決策を上から概念を取りました)この:

public function showLoginForm() 
    { 
     Session::put('url.intended',URL::previous()); 
     return view('auth.login');   
    } 

そして、私は変更されている私のログインコントローラ内部:

if (auth()->attempt(array('email' => $request->input('email'), 
      'password' => $request->input('password')))){ 
if(Auth::user()->name == 'Admin'){ 
       return redirect()->to('home'); 
      } 
      else{ 
      return Redirect::to(Session::get('url.intended')); 
      } 
    } 

そして、それはユーザーがログインしたとき、彼は意志方法です前のページに自動的にリダイレクトされます..

関連する問題