在Laravel中的视图中访问用户数据库信息

时间:2015-01-21 16:59:33

标签: php laravel blade

我正在尝试在我的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>

在此上下文中访问用户对象(使用当前登录用户的信息)的正确方法是什么?

2 个答案:

答案 0 :(得分:3)

如果您尝试访问记录的用户数据,例如

$user->name

然后您需要将已登录的用户从控制器传递到blade view

retun View::make("pathAndNameOfBladeFile")->with(Array("user" => Auth::user()));

并将@if(Auth::check())更改为@if($user)

中的blade view

- 或者

在刀片文件顶部的

添加此内容(在您的代码中使用$user之前将其放入)

@if(Auth::check())
    <?php $user = Auth::user(); ?>
@endif

- 或者

你可以做一些@ karrde00在答案中建议的东西。

清洁工为什么这样做是从控制器传递$user

答案 1 :(得分:1)

您希望在Laravel中使用类似{{Auth :: user() - &gt; name}}的内容。它将为您提供Blade模板中视图的登录用户。