2016-12-15 7 views
1

私はすべてのマイビューのテンプレートファイルとしてlayouts.appを使用しています。私はそうのように、(私のメニューの右上隅に私のドロップダウン内)その認証されたユーザープロファイルにユーザーを送信したい:

<ul class="dropdown-menu" role="menu"> 
    <li> 
     <a href="{{ url('/users/' . $users->id) }}">@lang('user.profile')</a> 
    </li> 
</ul> 

は残念ながら $usersは未定義です。コントローラなしで $usersをどのように定義すればよいですか?

ソリューション:

<ul class="dropdown-menu" role="menu"> 
    <li> 
     <a href="{{ url('/users/' . auth()->user()->id) }}">@lang('user.profile')</a> 
    </li> 
</ul> 
+0

これはTWIGのようです。私は正しい?あなたが 'render'を呼び出したときに渡さなかったので' $ users'は未定義ですか?また、 '$ users'の値をコントローラの外部から取得する方法が分かりませんか? –

+0

さらに、 '$ users'という言葉は複数形であり、それは配列であるかもしれません。しかし、あなたはそれから財産を取得しようとしています。名前は間違っていますか? –

+0

@BenHillier実際には刃です。ええ、私はブレードに何も渡していないし、コントローラーがないと正確にわからない。そのため、 '$ users'は未定義です。 –

答えて

1

あなたはいつも、ブレードビューでのAuthファサードにアクセスすることができます。あなたは、ユーザーが実際にログインしていることを確認する必要がありますしかし

{{ url('/users/' . Auth::user()->id) }} 

@if(Auth::user()) 
    ... stuff you want to show ... 
@endif 

あなたの意見/テンプレートにあなたが欲しいものを渡すことができますofcourseのファサードに加えて。通常、コントローラでこれを行います。 aditional簡単な概要として:

  • あなたのルートは要求をキャッチし、コントローラ機能を呼び出すか、例えばだから、直接

を応答し、次のいずれか

// respond directly within route definition 
Route::get('/', function() { 
    return view('home'); 
}); 

あなたが値を追加するための複数のオプションを持っていますここに。

return view('home')->with(['user' => Auth::user()]); 

または

$user = Auth::user(); 
return view('home', compact('user')); 

または

return view('home', ['user' => Auth::user()]); 

すべての3つの方法は、あなたのビューから$ユーザーにアクセスできるようになります。ただし、ユーザーがログインしていない場合、Auth :: user()がnullである可能性があることを忘れないでください。したがって、常に外部if節でチェックしてください。

+0

他のオブジェクトをテンプレートに渡すのはどうですか?私はあなたが 'Auth'ファサード以外にはできないと仮定しています。 –

+1

私の答えは2番目に向上します –

+0

これは(ルートとコントローラの両方で)うまくいくでしょう: 'return view( 'layouts.app'、['user' => Auth :: user()]);'? –

関連する問題