【问题标题】:Trying to get property 'name' of non-object (View:试图获取非对象的属性“名称”(查看:
【发布时间】:2020-01-23 05:30:33
【问题描述】:

试图获取非对象的属性“名称”(查看:

当我的会话到期时我收到此错误。所以当您刷新浏览器时我收到此错误我该如何解决问题。

这个错误发生在我的五个 Blade.php 文件中。当我在这些刀片中并刷新浏览器时,我得到了这个错误。

<li class="nav-item dropdown nav-user">
    <a class="nav-link nav-user-img" href="#" id="navbarDropdownMenuLink2" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><img src="assets/images/avatar-1.jpg" alt="" class="user-avatar-md rounded-circle"></a>
    <div class="dropdown-menu dropdown-menu-right nav-user-dropdown" aria-labelledby="navbarDropdownMenuLink2">
        <div class="nav-user-info">
            <h5 class="mb-0 text-white nav-user-name">
                {{ Auth::user()->name }}
                {{ Auth::user()->email }}
            </h5>
            @csrf
            <span class="status"></span><span class="ml-2">Online</span>
        </div>
        <a class="dropdown-item" href="#"><i class="fas fa-user mr-2"></i>Account</a>
        <a class="dropdown-item" href="#"><i class="fas fa-cog mr-2"></i>Setting</a>
        <a class="dropdown-item" href= "{{ route('logout') }}" ><i class="fas fa-power-off mr-2"></i>Logout</a>
    </div>
</li>

【问题讨论】:

  • 检查您的用户表,如果您有一个具有此名称的列,并检查您的用户表是否有数据。
  • 我的用户表有一个名为 name 的列,并且该表有数据

标签: php laravel-5 session-cookies


【解决方案1】:

您可以使用Auth::check()检查用户是否登录

所以你的刀片部分应该是这样的:

@if(Auth::check())
    <h5 class="mb-0 text-white nav-user-name">
        {{ Auth::user()->name }}
        {{ Auth::user()->email }}
    </h5>
@endif

此外,如果访问者在未登录时不应该看到此刀片,您可以将中间件添加到您的路线

Route::middleware(['auth'])->group(function () { 
// your routes here
});

这将在用户未登录时将用户重定向到登录页面。

【讨论】:

  • 我希望它让我退出并再次登录,因为添加此页面后它会保持在该页面的登录状态,我希望它让我退出并再次登录,因为会话已过期
  • 为什么会话会过期?我发布的答案是您问题中错误的解决方案。如果会话过期并且您仍在检查登录用户的属性,则会收到错误 Trying to get property 'name' of non-object
  • 会话到期时发生错误。而不是让我退出它给我那个错误。
  • 将-&gt;middleware('auth'); 添加到您的路线中,以便只有登录用户才能访问该路线。 more info on assigning middleware
  • Route::get('admin/profile', function () { // })-&gt;middleware('auth'); 我应该把我的路由放在这个组中间件中
【解决方案2】:

您的查询返回的是数组还是对象?如果你把它转储出来,你可能会发现它是一个数组,你所需要的只是一个数组访问([])而不是对象访问(->)。

【讨论】:

  • Auth::user() 返回当前用户模型或null 如果没有用户登录。
猜你喜欢
  • 2019-07-22
  • 2021-09-03
  • 2019-05-23
  • 2019-07-11
  • 2020-10-01
  • 2019-12-13
  • 1970-01-01
  • 2021-06-04
  • 2020-04-16
相关资源
最近更新 更多