将$ user对象传递给模板文件

时间:2016-12-15 11:32:38

标签: php templates laravel-5.3

我使用TokenMismatchException作为我所有观看的模板文件。我想将用户发送到其经过身份验证的用户个人资料(位于我菜单右上角的下拉列表中),如下所示:

layouts.app

不幸的是<ul class="dropdown-menu" role="menu"> <li> <a href="{{ url('/users/' . $users->id) }}">@lang('user.profile')</a> </li> </ul> 未定义。如何在没有控制器的情况下定义$users

解决方案:

$users

1 个答案:

答案 0 :(得分:1)

您始终可以在刀片视图中访问Auth外观。

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

但是,您应确保用户实际登录。

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

除了Facades,您可以将任何想要的内容传递给您的视图/模板。通常在控制器中执行此操作。作为一个附加的快速概述:

  • 您的路线捕获请求并调用控制器功能或直接响应

例如:

// 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()]);

这三种方法都允许您从视图中访问$ user。但是,如果用户未登录,请不要忘记Auth :: user()可能为null。因此,请始终在外部if子句中检查它。