确定用户个人资料是否属于 Laravel 中的当前用户

Determine whether user profile belongs to current user in Laravel

在我的应用程序中,我有用户配置文件的概念。显示的信息会有所不同,具体取决于用户查看的是他们自己的个人资料还是其他用户的个人资料。这是 UsersController@show 的简化视图:

public function show($id)
{
    $user = User::findOrFail($id);
    $currentUser = Auth::user();
    return view ('users.show', compact('user', 'currentUser'));
}

在我看来,我最终不得不编写如下代码:

@if ($currentUser === $user->id)
 <section class="container search-form visible-nav">
    <div class="row">
        <div class="col-xs-12">
            @include ('partials._search')
        </div>
    </div>
 </section>
@endif

这似乎是一个笨拙的实现,尤其是对于像 Laravel 这样的语言。在我看来,有没有更简洁的方法可以达到相同的结果?

不是真的。您需要检查当前用户是否是某处被查看的用户 - 在控制器或视图中。

不过您可以稍微简化一下代码:

public function show($id)
{
    $user = User::findOrFail($id);
    return view ('users.show', compact('user'));
}

@if (Auth::id() === $user->id)
<section class="container search-form visible-nav">
    <div class="row">
        <div class="col-xs-12">
            @include ('partials._search')
        </div>
    </div>
</section>
@endif

还有一些其他选项,例如根据当前用户是否与查看的用户相同返回不同的 blade 模板,但如果唯一的区别是几个 @ifs,我会把它放在一个模板。