将 $user 对象传递给模板文件
Pass $user object to a template file
我使用 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>
您始终可以在 blade 视图中访问 Auth facade。
{{ url('/users/' . Auth::user()->id) }}
但是您应该确保用户确实已登录。
@if(Auth::user())
... stuff you want to show ...
@endif
除了门面,您当然可以将任何您想要的内容传递给您的视图/模板。通常你在你的控制器中这样做。作为附加的快速概览:
- 您的路由捕获请求并调用控制器函数或直接响应
例如:
// 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 子句中检查它。
我使用 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>
您始终可以在 blade 视图中访问 Auth facade。
{{ url('/users/' . Auth::user()->id) }}
但是您应该确保用户确实已登录。
@if(Auth::user())
... stuff you want to show ...
@endif
除了门面,您当然可以将任何您想要的内容传递给您的视图/模板。通常你在你的控制器中这样做。作为附加的快速概览:
- 您的路由捕获请求并调用控制器函数或直接响应
例如:
// 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 子句中检查它。