在 Laravel 的视图中访问用户数据库信息
Accessing user database info within a view in Laravel
我正在尝试在我的 Laravel 项目上创建一个动态导航栏,如果用户已登录,则输出 Hello, {{$user->name}}!
.
但是,这不起作用。
如果我尝试将 $user->name
变量添加到我的导航栏 layout
,我只会收到以下错误:Undefined variable: user (View: C:\xampp\htdocs\laravel\app\views\layout\navbar.blade.php)
.
这个layout
包含在主layout
中,像这样:@include('layout.navbar')
,代码如下:
<nav class="navbar navbar-default">
<div class="container-fluid">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" id="logo" href="{{URL::route('home')}}">asd</a>
<ul class="nav navbar-nav">
@if(Auth::check())
<li>
<a>Hello, {{$user->name}}!</a>
</li>
@endif
</ul>
</div>
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
<ul class="nav navbar-nav navbar-right">
@if(Auth::check())
<li>
<a href="{{URL::route('profile', $user->name)}}">Profile</a>
</li>
<li>
<a href="{{URL::route('account-logout')}}">Logout</a>
</li>
@else
<li>
<a href="{{URL::route('account-login')}}">Login</a>
</li>
<li>
<a href="{{URL::route('account-create')}}">Register</a>
</li>
@endif
</ul>
</div><!-- /.navbar-collapse -->
</div><!-- /.container-fluid -->
</nav>
在此上下文中访问用户对象(包含当前登录用户的信息)的正确方法是什么?
您将要在 Laravel 中使用类似 {{ Auth::user()->name }} 的东西。它将为您提供 Blade 模板中视图的登录用户。
如果您尝试访问已记录的用户数据,例如,
$user->name
然后您需要将登录的用户从控制器传递到 blade view
作为,
retun View::make("pathAndNameOfBladeFile")->with(Array("user" => Auth::user()));
并将 @if(Auth::check())
中的 @if(Auth::check())
更改为 blade view
中的 @if($user)
-- 或
在 blade 文件的顶部添加这个,(在您的代码中使用 $user
之前添加这个)
@if(Auth::check())
<?php $user = Auth::user(); ?>
@endif
-- 或
您可以像@karrde00 在答案中建议的那样做。
清洁器为什么要这样做是从控制器传递 $user
。
我正在尝试在我的 Laravel 项目上创建一个动态导航栏,如果用户已登录,则输出 Hello, {{$user->name}}!
.
但是,这不起作用。
如果我尝试将 $user->name
变量添加到我的导航栏 layout
,我只会收到以下错误:Undefined variable: user (View: C:\xampp\htdocs\laravel\app\views\layout\navbar.blade.php)
.
这个layout
包含在主layout
中,像这样:@include('layout.navbar')
,代码如下:
<nav class="navbar navbar-default">
<div class="container-fluid">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" id="logo" href="{{URL::route('home')}}">asd</a>
<ul class="nav navbar-nav">
@if(Auth::check())
<li>
<a>Hello, {{$user->name}}!</a>
</li>
@endif
</ul>
</div>
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
<ul class="nav navbar-nav navbar-right">
@if(Auth::check())
<li>
<a href="{{URL::route('profile', $user->name)}}">Profile</a>
</li>
<li>
<a href="{{URL::route('account-logout')}}">Logout</a>
</li>
@else
<li>
<a href="{{URL::route('account-login')}}">Login</a>
</li>
<li>
<a href="{{URL::route('account-create')}}">Register</a>
</li>
@endif
</ul>
</div><!-- /.navbar-collapse -->
</div><!-- /.container-fluid -->
</nav>
在此上下文中访问用户对象(包含当前登录用户的信息)的正确方法是什么?
您将要在 Laravel 中使用类似 {{ Auth::user()->name }} 的东西。它将为您提供 Blade 模板中视图的登录用户。
如果您尝试访问已记录的用户数据,例如,
$user->name
然后您需要将登录的用户从控制器传递到 blade view
作为,
retun View::make("pathAndNameOfBladeFile")->with(Array("user" => Auth::user()));
并将 @if(Auth::check())
中的 @if(Auth::check())
更改为 blade view
@if($user)
-- 或
在 blade 文件的顶部添加这个,(在您的代码中使用 $user
之前添加这个)
@if(Auth::check())
<?php $user = Auth::user(); ?>
@endif
-- 或
您可以像@karrde00 在答案中建议的那样做。
清洁器为什么要这样做是从控制器传递 $user
。