2017-04-04 176 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

nope ..它不起作用 – 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根據最近的文件目錄給予解決方案..

我已經改變了showLoginFrom控制器,它裏面AuthenticateUsers性狀這樣的:

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')); 
      } 
    } 

這就是如何當用戶登錄時,他將被自動重定向到前一頁..

相關問題