我想在Laravel的内置用户表中公开显示用户信息。更具体地说,任何人都可以在未登录的情况下查看用户信息(名称,电子邮件,用户名)。 我在刀片文件中使用了这些:
{{ Auth::user()->name }}
{{ Auth::user()->email }}
但它仅在用户登录时才有效,否则会显示错误。 即使我在控制器中使用了 ELOQUENT ,也通过查看传递了 $ user 对象。 我正在附加图像,以便您可以理解我的问题。这是我的 PagesController 文件
<?php
namespace App\Http\Controllers;
use App\Post;
use App\User;
class PagesController extends Controller{
public function getIndex(){
$posts=Post::orderBy('id', 'DESC')->paginate(4);
$user=User::all();
return view('pages.welcome')->withPosts($posts)->withUser($user);
}
}
这是我的 welcome.blade.php 文件
<div class="panel-heading">{{ ucwords($user->name) }}</div>
答案 0 :(得分:1)
Auth :: user获取当前已验证用户的信息。因此,当用户登录时它将起作用。
答案 1 :(得分:1)
Auth :: user()返回当前经过身份验证的用户,或为guest用户返回null。因此,如果您在访客用户上调用Auth::user()->name
,它将显示错误trying to get property of non-object
,因为它试图从空对象获取名称
您可以在刀片中使用以下内容:
@if(Auth::check())
User: {{ Auth::user()->name }}
Email: {{ Auth::user()->email }}
@else
User: Guest
@endif
如果要显示所有用户,请在刀片中使用以下内容:
@foreach(\App\User::all() as $user)
User: {{ $user->name }}
Email: {{ $user->email }}
@endforeach