2016-05-30 9 views
1

ユーザーがログインした後、関連するモデルのいずれかのスラッグを含むルートにリダイレクトされるようにします。私はこのような認証コントローラで$ redirectTo変数を編集した:ログイン後の承認されたユーザーの関係へのリダイレクト

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

また、私は両方のための非オブジェクトエラーのプロパティを取得しています

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

を試してみました。

私のユーザーをそれぞれの状態のスラッグを含むルートにリダイレクトできますか?

+0

redirectPathメソッドをオーバーライドしてみては? – Chay22

+0

@ Chay22私は一重引用符と二重引用符でそれを試しました、同じ '非オブジェクトのプロパティ'エラー – DanielPahor

答えて

0

は、二重引用符についてどのようにあなたのAuthController

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

ありがとう、これはうまくいきます。ログアウトと登録後にリダイレクトする同様の機能はありますか? – DanielPahor

+0

checkouts 'AuthenticatesAndRegistersUsers' traitの' getLogout'メソッド – huuuk

+0

@DanielPahor登録はログイン 'redirectPath()'と同じリダイレクトパスを使用しますが、ログアウトの場合は 'redirectAfterLogout'プロパティを使用します。リダイレクトしたい場合は' logout() 'メソッドをオーバーライドする必要がありますユーザーを州のスラグに誘導する。 – 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()); 
    } 
} 
関連する問題