2016-05-30 87 views
1

我的用戶登錄後,我希望它們被重定向到包含它們相關模型的一個子彈的路線。我已編輯的身份驗證控制器的$ redirectTo變量是這樣的:登錄到授權用戶關係後重定向

protected $redirectTo = '/auth()->user()->country->slug'; 

我也曾嘗試

protected $redirectTo = '/{{auth()->user()->country->slug}}'; 

我得到非對象錯誤的屬性兼而有之。

對此的任何解決方案,所以我可以將我的用戶重定向到包含它們各自狀態的段落的路由?

+0

如何雙引號? – Chay22

+0

@ Chay22我試過用單引號和雙引號,同樣的屬性非對象錯誤 – DanielPahor

回答

0

嘗試重寫redirectPath方法在AuthController

public function redirectPath() 
{ 
    return auth()->user()->state->slug; 
} 
+0

非常感謝,這很好。註銷和註冊後是否有類似的重定向功能? – DanielPahor

+0

簽出'AuthenticatesAndRegistersUsers'特性中的'getLogout'方法 – huuuk

+0

@DanielPahor註冊使用與登錄'redirectPath()'相同的重定向路徑,但註銷它使用'redirectAfterLogout'屬性,如果你想重定向,你必須重寫'logout()'方法用戶到他們州的slu。。 – Rifki

0

不能使用的功能來聲明類屬性,看http://php.net/language.oop5.properties

這個聲明可能包括初始化,但初始化必須是一個恆定值 - 也就是說,它必須能夠進行評估在編譯時並且不能依賴運行時信息才能進行評估。

如果您有屬性,必須使用函數來定義它使用__construct()方法,如:

class MyClass 
{ 
    protected $myproperty; 

    public function __construct() 
    { 
     $this->myproperty = somefunction(); 
    } 
} 

但這種情況下,你不能用那種方式,因爲當類沒有啓動用戶認證尚未。相反,您可以在控制器上使用authenticated()方法。

class AuthController extends Controller 
{ 
    ... 

    public function authenticated() 
    { 
     if($path = Auth::guard($this->getGuard())->user()->state->slug){ 
      return redirect($path); 
     } 

     return redirect()->intended($this->redirectPath()); 
    } 
}