2016-05-28 9 views
0

私はコアラベルコードとの最初のやりとりをしているので、何も壊さないように注意したいと思っています。Laravel:ログイン後に新しいステップを保存するための最も単純な/正しい方法は?

私のプロジェクトでは、ユーザーはperson-> person_idを介して人物レコードにも対応していますので、\ Auth :: user()(どこでも便利にアクセス可能)をとり、get_person_from_userオブジェクトのため、私は任意のコントローラから認証されたユーザーの人のレコードを取得し、ビューに渡すことができます。

問題:人のレコードから、デフォルトのブレードビュー(複数の異なるビューで拡張されている)のnav部分に含めるデータがあります。そのため、私は最初にコントローラを通過するつもりはない。ログインしたユーザーの個人レコードをここで利用できるようにする方法が不明です。助言がありますか?

一般的にアクセス可能になるように、ユーザーレコード(グローバルにセッション?)を保存するために、ユーザーがログインした後にいくつかのステップを追加する必要があると思います。ログイン情報はAuthenticatesUsers.phpで発生し、reading around私はauthControllerにpostLoginのオーバーライドを追加したいと思うようです。 は、しかし、私は(まだそれに何かを追加しない)私のAuthControllerにAuthenticatesUsers.phpからその関数をコピーしようとした、と私は、ログインしようとすると、AuthControllerは私に新しいエラーを与える:良い上

ReflectionException in RouteDependencyResolverTrait.php line 81: 
Class App\Http\Controllers\Auth\Request does not exist 

何かアドバイス私はそれを渡すためのコントローラを持っていないときに、認証されたユーザーのための人のオブジェクトにアクセスする方法については?

答えて

1

ユーザーモデルとユーザーモデルの正しい関係を設定できます。

public function person() 
{ 
    return $this->belongsTo(Person::class); 
} 

次に、あなたが行うことができます。

Auth::user()->person; 

View Composerを使用することができ、特定のビューで使用可能な変数を持つため。 (作成およびサービスプロバイダを登録し、register方法にこれを追加することができます。)このような潜在的な何か:

view()->composer('someview', function ($view) { 
    if ($user = Auth::user()) { 
     $somevar = $user->person->somevar; 
    } else { 
     $somevar = null; // or some default 
    } 
    $view->with('somevar', $somevar); 
}); 

をこのビューはまた、シナリオで使用されている場合は、誰かが必要になりますauthedする必要がない場合関係を使用しようとする前にAuth::user()がヌルであるかどうかをチェックしたい。

Laravel Docs - Views - View Composers

+0

Authファサードにアクセスすることができ雄弁relation

User.php

public function person() { return $this->belongsTo('NAMESPACE_TO_YOUR_MODEL\Person'); //also you can specify FK, more info in docs } 

を使用することをお勧め!ありがとうございました!! –

1

私はあなたが、あなたはそれが動作しますあなたのビューで

Auth::user()->person 
+0

はい!ありがとうございました!! –

関連する問題